报错题目
外星密码 - 洛谷
具体报错信息
Runtime Error.Received signal 6: Aborted / IOT trap.
错误代码
#include <iostream>
#include <cstring>
using namespace std;
string sol() {
string s = "";
string t = "";
char c = ' ';
int n = 0;
while (cin >> c) {
if (c == '[') {
cin >> n;
t = sol();
while (n--)
s += t;
} else {
if (c == ']')
return s;
else
s += c;
}
}
}
int main() {
cout << sol();
return 0;
}
错误原因
(还得是chat)。。自己改了半天,从cin改成scanf还是有问题。绝对没想到问题会出在这里。
更正代码
#include <iostream>
#include <cstring>
using namespace std;
string sol() {
string s = "";
string t = "";
char c = ' ';
int n = 0;
while (cin >> c) {
if (c == '[') {
cin >> n;
t = sol();
while (n--)
s += t;
} else {
if (c == ']')
return s;
else
s += c;
}
}
return s;
}
int main() {
cout << sol();
return 0;
}
反思
其实dev是警告过我的,但是考虑到有的路径确实不会返回,就没有当回事。
而且报的是IO的错,还以为是读入的问题。
改代码还真不是个“头痛医头,脚痛医脚”的事儿!
尽量写鲁棒性强的代码吧!