贴代码,在C++11下可以AC,但是在C++98下会RE,求问是什么原因orz?难道是用到了什么新的C++特性?
#include<iostream>
#include<queue>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int n;
struct seq {
vector<int> con;
int sum;
};
queue<seq> q;
string ans[1000];
int index;
int main() {
cin >> n;
for (int i = 1; i < n; i++) {
q.push({ {i}, i });
}
while (!q.empty()) {
seq cur = q.front();
q.pop();
if (cur.sum > n) {
continue;
}
if (cur.sum == n) {
for (int i = 0; i < cur.con.size(); i++) {
char charnum = cur.con[i] + '0';
if (i == 0) ans[index] += charnum;
else {
ans[index] += '+';
ans[index] += charnum;
}
}
index++;
continue;
}
for (int i = cur.con.back(); i < n; i++) {
q.push({ cur.con, cur.sum + i });
q.back().con.push_back(i);
}
}
sort(ans, ans + index);
for (int i = 0; i < index ; i++) {
cout << ans[i] << endl;
}
return 0;
}