40分求助
  • 板块P1928 外星密码
  • 楼主Catlz
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/1/5 21:17
  • 上次更新2024/1/5 21:18:29
查看原帖
40分求助
1125348
Catlz楼主2024/1/5 21:17
#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>
#include<unordered_map>
#include<queue>
#include<set>
#include<iomanip>
#include<cmath>
#include<string>
string s;
#define N 100000
int ZH(int &t,int k)
{
	for (int i = k; i < s.size(); i++) //算数字
	{
		if (48 <= s[i] && s[i] <= 56)
		{
			t= t * 10 + s[i] - '0';
			//cout<<1<<' ';
		}
		else
		{
			return i;
		}
	}
}
int KG(int t)
{
	int sum=1;
	int mid=1;
	int l = 0;
	string d;
	for (int i = t; i < s.size(); i++)
	{
		if (s[i] == '[')l++;
		else if (48 < s[i] && s[i] < 56)
		{
			int t=0;
			i = ZH(t,i);
			i--;
			sum *= t;//总长
		}
		else if (s[i] >= 65&&s[i]!=']')d += s[i]; //字母
		else if (s[i] == ']') {
			mid = i;  
			break;
		}
	}
	for (int i = 1; i <= sum; i++)
		cout << d;

	return mid + l; //下一个起始点
}
int main()
{

	cin >> s;
	for (int i = 0; i < s.size(); i++)
	{
		if (65<=s[i]&&s[i]<=90)
		{
			cout << s[i];
		}
		else
		{
			i=KG(i);
		}
	}

	return 0;
}

有佬看看哪个地方有问题吗,没看出来,试错点了也一样的呀

2024/1/5 21:17
加载中...