P1928 外星密码 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
这道题参考了题解的思路
感觉自己对递归理解还是不够透彻
再记录一个自己模糊的知识点:
while (cin >> ch)//一直读入字符,直到Ctrl+z
而比赛的时候输入文件都有ctrl+z
所以对于这种输入:
Input
输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;
Sample Input
3 1 0 -2
2 -1 -1
可以这样写:
int n;
while(cin>>n)
{
···
while(n--)
{
cin >> temp;
···
}
}
接下来是该题代码:
#include <iostream>
using namespace std;
string unpack()
{
int n;
string s, temp;
char ch;
while (cin >> ch)
{
if (ch == '[')
{
cin >> n;
temp = unpack();
while (n--) s += temp;//这里不能写成 s += unpack(); 因为unpack是要输入东西的 循环n次就错了
}
else
{
if (ch == ']') return s;
else s += ch;
}
}
}
int main()
{
cout << unpack();
return 0;
}