40分的额,求助大佬们。
查看原帖
40分的额,求助大佬们。
312780
456laji楼主2020/5/16 19:33

代码丑陋,见谅。

我的思路是:

我认为把这个些需要重复的数的全部相乘所得的结果,就是这后面字符串的出现的总次数,我也推了一下,是没有问题的。

#include<bits/stdc++.h>
using namespace std;
string s,x;

int main()
{
	cin>>s;
	int len=s.length(),i;
	
	for(i=0;i<len;i++)
	{
		if(s[i]=='[') break;
		printf("%c",s[i]);
	}
	
	int t,a=0,sum=1,k=0,p=0;
	for(int j=len-1;j>=i;j--)
	{
		if(s[j]>='A'&&s[j]<='Z'&&s[j-1]>='0'&&s[j-1]<='9') t=j;
		if(s[j]=='['&&p)
		{
			if(a!=0) sum*=a;
			k=0;a=0;
		}
		if(s[j]==']') p=1;
		if(s[j]>='0'&&s[j]<='9'&&p)
		{
			a+=pow(10,k)*(s[j]-'0');
			k++;
		}
	}
	
	for(i=t;i<len;i++)
	{
		if(s[i]==']') break;
		x+=s[i];
	}
	
	for(int j=0;j<sum;j++)
		cout<<x;
	for(;i<len;i++)
	{
		if(s[i]!=']')
			printf("%c",s[i]);
	}
	printf("\n");
	return 0;
}
2020/5/16 19:33
加载中...