仔细思考这个题应该是一个递归。
在输出一个字符串后如果他是pair那么一定还要继续输入而且是成对的。
然后我们继续输入。那么什么时候是异常的呢?
当你递归到下一层input的时候,此时也正是需要输入,但是你没有输入那么flag=0,代表异常。
还有一种异常就是,函数已经正常返回,但是你继续还有输入那么这种情况也是一场的也令flag=0;
#include <iostream>
using namespace std;
string str = "", s;
int n, flag = 1;
void input()
{
if (cin >> s)
{
str += s;
if ( s == "pair")
{
str += '<';
input();
str += ',';
input();
str += '>';
}
}
else flag = 0;
}
int main()
{
cin >> n;
input();
if (cin >> s) flag = 0;
if (!flag ) puts("Error occurred");
else cout << str;
return 0;
}
对着没过的案例调了好久终于ac了,看题解这么简洁我哭了
太简洁优美了
3
pair int int int
这个应该符合题意,但代码输出error
题目里说了答案唯一,同学你说的例子答案不唯一
main函数里面的if (cin >> s ) flag = 0;需要把if改成while吗,如果有多个未输入的int
甚至没有用到n
太强了,我的代码太丑陋了
🐂
nb
啊我理解错意思了,原来多个有效字符串在一起不算有效字符串啊
感觉比y总写的都简单易懂tql
%%%
膜拜
qiang
当你递归到下一层input的时候,此时也正是需要输入,但是你没有输入那么flag=0,代表异常
如果这样的话,那什么时候input()函数正常结束呢?
只有输入pair才会有两个input(),输入的是int的话,这个input就结束了
大佬,我想问一下void函数中else是什么意思里?还有main函数中if(cin >> s)又是干什么的,有点不理解
else应该是树还没有创建完就停止输入了表示一种异常情况就像第二个样例那种,if(cin >> s)是要继续输入元素才能构造一棵树,否则就是上面说的异常情况
tql
大佬