AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

AcWing 4865. 有效类型    原题链接    中等

作者: 作者的头像   yxc的小迷妹 ,  2023-02-25 20:46:29 ,  所有人可见 ,  阅读 1615


64


11

仔细思考这个题应该是一个递归。

在输出一个字符串后如果他是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;
}

20 评论


用户头像
unique_sakura   2023-02-25 21:16      5    踩      回复

对着没过的案例调了好久终于ac了,看题解这么简洁我哭了


用户头像
smile_703   2023-03-03 14:24         踩      回复

太简洁优美了


用户头像
手握星辰   2023-02-28 18:10         踩      回复

3
pair int int int
这个应该符合题意,但代码输出error

用户头像
Estrellaj   2023-03-05 18:54         踩      回复

题目里说了答案唯一,同学你说的例子答案不唯一


用户头像
Carpe__diem   2023-02-27 19:40         踩      回复

main函数里面的if (cin >> s ) flag = 0;需要把if改成while吗,如果有多个未输入的int


用户头像
walili   2023-02-27 18:25         踩      回复

甚至没有用到n


用户头像
walili   2023-02-27 17:53         踩      回复

太强了,我的代码太丑陋了


用户头像
题再简单我也会   2023-02-27 15:33         踩      回复

🐂


用户头像
spider.   2023-02-26 19:58         踩      回复

nb


用户头像
笔墨春秋   2023-02-26 16:35         踩      回复

啊我理解错意思了,原来多个有效字符串在一起不算有效字符串啊


用户头像
你tql   2023-02-26 09:46         踩      回复

感觉比y总写的都简单易懂tql


用户头像
kiacute   2023-02-26 09:40         踩      回复

%%%


用户头像
久绊   2023-02-26 08:39         踩      回复

膜拜


用户头像
dasdasd   2023-02-25 22:21         踩      回复

qiang


用户头像
htu22_01_niu   2023-02-25 21:39         踩      回复

当你递归到下一层input的时候,此时也正是需要输入,但是你没有输入那么flag=0,代表异常
如果这样的话,那什么时候input()函数正常结束呢?

用户头像
UniqueDay   2023-02-26 09:23      1    踩      回复

只有输入pair才会有两个input(),输入的是int的话,这个input就结束了


用户头像
htu22_01_niu   2023-02-25 21:37         踩      回复

大佬,我想问一下void函数中else是什么意思里?还有main函数中if(cin >> s)又是干什么的,有点不理解

用户头像
你tql   2023-02-26 09:51         踩      回复

else应该是树还没有创建完就停止输入了表示一种异常情况就像第二个样例那种,if(cin >> s)是要继续输入元素才能构造一棵树,否则就是上面说的异常情况


用户头像
DkDk   2023-02-25 21:16         踩      回复

tql


用户头像
fushi2218   2023-02-25 20:47         踩      回复

大佬


App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息