#include<iostream>
using namespace std;
int a[114],n,ans,cxk[114514][11];
void dfs(int last,int k)
{
if(k>10&&last==n)
{
ans++;
for(int i=1;i<=10;i++)
cxk[ans][i]=a[i];
return ;
}
for(int i=1;i<=3;i++)
{
if(last+i>n) break;
a[k]=i;
dfs(last+i,k+1);
}
}
int main()
{
cin>>n;
if(n<10||n>30)
{
cout<<0;
return 0;
}
dfs(0,1);
cout<<ans<<endl;
for(int i=1;i<=ans;i++)
{
for(int j=1;j<=10;j++)
cout<<cxk[i][j]<<" ";
cout<<endl;
}
return 0;
}
为什么会多出来好多答案。
太菜了。求。