各位大拿帮忙看下错哪里了,我也下载了一个 WA的测试点,至少打印多少组结果这里是正确的
#include<bits/stdc++.h>
using namespace std;
int tiaoliao[11];
int used[11];
int n,cnt;
char res[500000];
int pos;
int select(int left,int begin)
{
if(left==0)
{
cnt++;
for(int i=1;i<=10;i++)
{
pos+=sprintf(res+pos,"%d ",tiaoliao[i]);
}
pos+=sprintf(res+pos,"\r\n");
return 0;
}
for(int i=begin;i<=10;i++)
{
if(used[i]==0)
{
used[i]=1;
for(int j=1;j<=2;j++)
{
tiaoliao[i]+=j;
select(left-j,i+1);
tiaoliao[i]-=j;
}
used[i]=0;
}
}
return 0;
}
int main()
{
cin>>n;
if(n<10||n>30) {cout<<"0";return 0;}
for(int i=1;i<=10;i++)
{
tiaoliao[i]=1;
}
int left=n-10;
select(left,1);
cout<<cnt<<endl;
for(int i=0;i<strlen(res);i++)
printf(res);
return 0;
}