下载了第一个WA的点(2),用fc比较答案没问题。
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int a[15];
int ans;
void dfs1(int k,int sum){
if(k==11){
if(sum==n){
++ans;
}
return;
}
if(sum>=n) return;
dfs1(k+1,sum+1);
dfs1(k+1,sum+2);
dfs1(k+1,sum+3);
}
void dfs(int k,int sum){
if(k==11){
if(sum==n){
for(int i=1;i<=10;++i){
cout<<a[i]<<" ";
}
cout<<endl;
}
}
if(sum>=n) return;
a[k]=1;
dfs(k+1,sum+1);
a[k]=2;
dfs(k+1,sum+2);
a[k]=3;
dfs(k+1,sum+3);
}
int main(){
cin>>n;
if(n>30){
cout<<0<<endl;
return 0;
}
dfs1(1,0);
cout<<ans<<endl;
dfs(1,0);
return 0;
}