hdu 1274 展开字符串

链接

[http://acm.hdu.edu.cn/showproblem.php?pid=1274]

代码

反正就靠你C语言的递归和函数

#include<iostream>
#include<string>
#include<string.h>
#include<algorithm>
using namespace std;
int len;
string s;
int fun(int n){
	int i,tem; char c;
	for(c=s[n++];c!=')'&&n<len;c=s[n++]){//终止条件遇到 ')'和遍历完串 
		for(i=0;isdigit(c);c=s[n++])//如果遇到数字符 
		i=i*10+c-'0';
		if(!i) i=1;//如果是字母就输出 
		if(c=='('){//如果遇到 '('递归调用函数 
			while(i--)
			    tem=fun(n);
				n=tem;//更新n的值到下层递归开始的位置 
		}
		else{
			while(i--)
			putchar(c);
		}
	}
	if(c==')') return n;//返回本次读到的结束位置
}
int main(){
	int t; 
	freopen("in.txt","r",stdin); 
	cin>>t;
	while(t--){
		cin>>s;
		len=s.length();
		fun(0);
		cout<<endl;
	}
	return 0;
} 
posted @ 2018-11-28 14:22  ChunhaoMo  阅读(124)  评论(0)    收藏  举报