递归真的无解
#include<cstdio>
#include<iostream>
using namespace std;
int n,ans=0;
int a[55];
void run(int k,int p,int s)
{
if(s>n) return;
if(s==n)
{
printf("%d=",n);
for(int j=1;j<=k-2;j++)
{
printf("%d+",a[j]);
}
printf("%d\n",a[k-1]);
ans++;
return;
}
for(p;p<=n-s&&p!=n;p++)
{
a[k]=p;
run(k+1,p,s+p);
}
}
int main()
{
for(int r=1;r<=55;r++)
{
a[r]=0;
}
cin>>n;
run(1,1,0);
printf("%d\n",ans);
return 0;
}
为什么输出的时候是k-1 和 k-2呢 我是dou出来的
839

被折叠的 条评论
为什么被折叠?



