wa#2wa#3为什么会显示输出负数呢
查看原帖
wa#2wa#3为什么会显示输出负数呢
1219010
shadow_leader楼主2024/3/21 09:26
#include<iostream>
#include<string>
#include<vector>
using namespace std;
string a;
vector<string>s;
long long int change(long long int x,long long int y)
{
	long long int pos2=x-1, sum = 0, pos1=y, sum1 = 0, sum2 = 0;
	for (long long int i = x; i <= y;i++)
	{
		if (s[i] == "REPEAT")
		{
			sum1 = 0, sum2 = 0;
			for (int j = pos2+1; j <= y; j++)
			{
				if (s[j] == "[")
				{
					sum1++;
					if (sum1 == 1)
						pos1 = j;
				}
				else if (s[j] == "]")
				{
					sum2++;
					if (sum1 == sum2)
					{
						pos2 = j;
						break;
					}
				}
			}
			sum += atoi(s[i + 1].c_str()) * change(pos1 + 1, pos2 - 1);
			i+=pos2-pos1+1;
		}
		else if (s[i] == "FD")
		{
			sum += atoi(s[i + 1].c_str());
			i++;
		}
		else if (s[i] == "BK")
		{
			sum -= atoi(s[i + 1].c_str());
			i++;
		}

	}
	return sum;
}
int main()
{
	getline(cin, a);
	for (int i = 0; i <= a.size() - 1;i++)
	{
		string d;
		while (i<=a.size()-1&&a[i] != ' '&&a[i]!='['&&a[i]!=']')
		{
			d += a[i];
			i++;
		}
		if (d.size() != 0)
			s.push_back(d);
		if (a[i] == '[' || a[i] == ']')
			s.push_back(d = a[i]);
	}
	cout << change(0, s.size() - 1);
}
2024/3/21 09:26
加载中...