这段代码应该可以输出所有的方案数,但是如何按照字典序输出?
#include<bits/stdc++.h>
using namespace std;
int a[10];
void dfs(int n, int has) {
bool flag = 0;
if(n == 11) {
for(int i = 1; i <= 10; i ++) cout << a[i] << ' ';
cout << endl;
}
for(int i = 3; i >= 1; i --) {
if(10-n > has-i || 30-3*n < has-i){
continue;
}
else {
flag = 1;
a[10-n+1] = i;
dfs(n + 1, has - i);
}
}
}
int main() {
int n;
cin >> n;
if(n < 10 || n > 30) {
cout << 0;
return 0;
}
dfs(1, n);
}