题解 P1322 【logo语言】
摆明的递归题目,先来看看解题思路
首先while读入char类型的ch
如果是]那么就break
如果是T就读入空格然后再构造char类型的字符和string的字符串,每次读入一直到[停止读入,并且随时将字符串加上这个字符,再递归结果乘以这个字符串转成数字的结果
另外的前进后退就简单了
代码,20ms,616.00KB,代码长度945B,C++11 O2
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int cl()
{
int ans = 0;
char s;
while(scanf("%c", &s) != EOF)
{
if(s == ']')
{
break;
}
else if(s == 'T')
{
scanf(" ");
char a;
string s;
while(scanf("%c", &a))
{
if(a == '[')
{
break;
}
s += a;
}
ans += stoi(s) * cl();
}
else if(s == 'D')
{
scanf(" ");
int a;
cin >> a;
ans += a;
}
else if(s == 'K')
{
scanf(" ");
int x;
cin >> x;
ans -= x;
}
}
return ans;
}
int main()
{
cout << abs(cl()) << endl;
return 0;
}

浙公网安备 33010602011771号