付佬的括号匹配 - naive

时间限制: 1000 ms 内存限制: 65536 kb
总通过人数: 2 总提交人数: 2

题目描述

付佬是软件学院的红太阳,他说的每一句话都被奉为“太阳箴言”。

小明当然也不想错过学习付佬先进姿势的机会,可惜他今天没有水群,只好去翻999+的聊天记录了(哭)。

已知付佬说的每一句话总会在最外层套一对小括号,如:

(我给你三秒钟重新组织你的语言)

(女装还行)

付佬做事十分严谨,所以所有的只有半边括号的话一定不是付佬说的。

给你一段聊天记录,你能判断有多少条记录可能是“太阳箴言吗”?请顺便输出他们。

本题所有数据只含常用半角字符,不会出现全角字符以及除英语外的语言字符,更不会以空格结束字符串

输入

多组数据输入。

对于每组数据,第一行是聊天记录的行数n (n <= 10)

接下来n行,每行都是一个字符串,长度不超过50

输出

对于每组数据,第一行输出“太阳箴言”的数量,接下来按时间从前到后的顺序逐行输出每一条可能是“太阳箴言”的记录。最后输出一行“----------”。

输入样例

6
((emmmm...))
<wrong answer>
(cry
hhhhhhh)
(hai xing)
praise the sun!
1
lai shuai jiao

输出样例

2
((emmmm...))
(hai xing)
----------
0
----------

HINT

本题做法十分多样。

如果要保存字符串,可以使用char数组,也可以使用C++封装的string类型

C:

<string.h>头文件提供了计算char数组长度的函数strlen(char*)

C++:

<string>头文件提供了求string类对象长度的函数length()

此外也可以通过<cstring>头文件使用strlen(char*)函数

关于整行读入数据

平时使用的std::cin会在遇到空格和换行符的时候停止读入数据,scanf("%s")也是如此。

scanf("%c")可以接受空格和换行符,如果在之前加上一个空格,即scanf(" %c"),则会忽略空格和换行符。

C++ 提供了 getline()函数,可以将包括空格在内的数据一并存入string对象,直到遇到换行符才会停止。

C也有gets()函数来实现上述功能

相关推荐