下载了测试点
输入17 输出4740 也过了
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define du double
ll n,cnt,num[10000000][11],vis[10];
void my(){
for(int i=0;i<10;i++)num[cnt][i]=vis[i];
return;
}
void dfs(int x,int y){
if(x==10&&y==n){
my();
cnt++;
return;
}else if(y>=n){
return;
}else if(x==10)return;
for(int i=1;i<=3;i++){
vis[x]=i;
dfs(x+1,y+i);
vis[x]=0;
}
return;
}
int main(){
cin>>n;
if(n>30||n<10){
cout<<0;
return 0;
}
dfs(0,0);
cout<<cnt<<endl;
for(int i=0;i<cnt;i++){
for(int j=0;j<10;j++){
cout<<num[i][j]<<' ';
}
cout<<endl;
}
return 0;
}