#include<stdlib.h>
#include<stdio.h>
int c;
void count(int m,int n,int start)
{
int i,j;
if(n==1) c++;
else if(m<n) count(m,m,0);
else
{
for(i=start;i<=m/n;i++)
{
printf("i=%d m=%d n=%d\n",i,m,n);
count(m-i,n-1,i);
//printf("m=%d n=%d\n",m,n);
}
}
}
int main()
{
int t,m,n;
scanf("%d",&t);
while(t)
{
c=0;
scanf("%d %d",&m,&n);
count(m,n,0);
printf("%d\n",c);
t--;
}
return 0;
}
#include<stdio.h>
int c;
void count(int m,int n,int start)
{
int i,j;
if(n==1) c++;
else if(m<n) count(m,m,0);
else
{
for(i=start;i<=m/n;i++)
{
printf("i=%d m=%d n=%d\n",i,m,n);
count(m-i,n-1,i);
//printf("m=%d n=%d\n",m,n);
}
}
}
int main()
{
int t,m,n;
scanf("%d",&t);
while(t)
{
c=0;
scanf("%d %d",&m,&n);
count(m,n,0);
printf("%d\n",c);
t--;
}
return 0;
}
本文介绍了一个使用C语言实现的递归算法,该算法用于计算特定条件下整数的组合数量。通过递归调用自身并结合条件判断,程序能够解决一类组合数学问题。

1684

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



