现在的位置: 首页 > 综合 > 正文

zoj 2571 Big String Outspread

2013年10月09日 ⁄ 综合 ⁄ 共 749字 ⁄ 字号 评论关闭

Sample Input

2
1(1a2b1(ab)1c)
3(ab2(4ab))

Sample Output

abbabc
abaaaabaaaababaaaabaaaababaaaabaaaab

 看看案例就应该知道题意了。

程序代码:

#include<cstring>
#include<cstdio>
#include<string>
#include<iostream>
using namespace std;

#define N 666
char str[N];
int k;

string dfs()
{
	string temp;
	int num = 0;
	while(str[k] != ')' && str[k] != '\0')
	{
		if(str[k] >= '0' && str[k] <= '9')
			num = num * 10 + str[k] - '0' , k++;
		else if(str[k] >= 'a' && str[k] <= 'z' && num != 0)
		{
			for(int i = 0; i < num; i++)
				temp += str[k];
			k++ , num = 0;
		}
		else if(str[k] >= 'a' && str[k] <= 'z' && num == 0)
			temp += str[k] , k++ , num = 0;
		else if(str[k] == '(' && num != 0)
		{
			k++;
			string flag;
			flag = dfs();
			for(int i = 0; i < num; i++)
				temp += flag;
			num = 0;

		}
		else if(str[k] == '(' && num == 0)
			k++ , temp += dfs();
	}
	k++; // str[k] == ')' 时要加1
	return temp;
}

int main()
{
	int T;
	scanf("%d", &T);
	while(T--)
	{
		k = 0;
		scanf("%s", str);
		cout << dfs() << endl;
	}
	return 0;
}

抱歉!评论已关闭.