33,311
社区成员
发帖
与我相关
我的任务
分享
最里面的判断应该是这样5改成m
if(value==m-s*i)
{
time++;
}
#include <iostream>
using namespace std;
int time=0;
int value=1;
int main()
{
void recursion(int m,int n);
recursion(5,4);
cout<<time<<endl;
return 0;
}
void recursion(int m,int n)
{
for(int s=0;s<(n+1)/2;s++)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<m;j++)
{
value=i+j*1;
if(value==5-s*i)
{
time++;
}
}
}
}
}
成绩: 10 / 折扣: 0.8
int x;
static int a[1000],k=0,t=0;
void prt(){
int i,s=0;
t=0;
for(i=0;i<k;i++)
s=s+a[i];
if(s==x){
for(i=0;i<k;i++)
if(i<k-1) printf("%d+",a[i]);
else printf("%d",a[i]);
printf("\n");
t=1;
}
}
int q(int n,int m){
int i;
int s1,s2;
if(n==1||m==1){
for(i=1;i<=n;i++){
a[k]=1;
k++;
}
prt();
if(t) k=k-n;
return 1;
}
if(n<m) return(q(n,n));
if(n==m) {
a[k]=n;
k++;
prt();
if(t) k--;
s1=q(n,m-1);
return(1+s1);
}
a[k]=m;
k++;
prt();
if(t) k--;
s2=q(n-m,m);
k--;
s1=q(n,m-1);
return(s1+s2);
}
void main(){
a[0]=0;
printf("\nn=");
scanf("%d",&x);
printf("\ntotal=%d",q(x,x));
}