题目链接:【hdu 1274】
<span style="font-size:14px;">#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
char str[300];
int len;
int dfs(int pos)
{
int e,i;
for(i=pos; i<len; i++)
{
if(str[i]==')') break;
int k=0;
for(; i<len; i++)
{
if(str[i]>='0'&&str[i]<='9') k=k*10+str[i]-'0';
else break;
}
if(!k) k=1;
if(str[i]=='(')
{
while(k--)
{
e=dfs(i+1);
}
i=e;
}
else
{
while(k--) putchar(str[i]);
}
}
return i;
}
int main()
{
int n;
scanf("%d", &n);
while(n--)
{
scanf("%s", str);
len = strlen(str);
dfs(0);
printf("\n");
}
return 0;
}</span>

本文提供了一道来自HDU在线评测系统的编程题(HDU1274)的解析及C++代码实现。通过递归深度优先搜索(deep-first search, DFS)算法来解决括号展开问题,代码中运用了字符串处理和递归调用等技巧。
&spm=1001.2101.3001.5002&articleId=50220021&d=1&t=3&u=9367da3d94b84252bf22ef54a08d3937)
1625

被折叠的 条评论
为什么被折叠?



