一、组合数的实现
问题:从n个不同的元素中,任取m(m≤n)个元素为一组,求组合的个数?
分析:从n-1个元素到n个元素,每增加一个,这个元素可能被选中,也可能不被选中。若第n个元素被选中则是从n-1个元素中选择k-1个元素,若第n个元素没被选中,则是从n-1个元素中选择k个元素。即得以下公式:
#include<stdio.h>
//分析:从n个人里选k个人的组合数
//=从(n-1)个人里选k个人的组合数+从(n-1)个人里选(k-1)个人的组合数。
int fun(int n, int k)
{
if(k > n)
return 0;
else if(k == n||k == 0)
return 1;
else
return fun(n-1,k) + fun(n-1, k-1);
}
int main()
{
int n, k;
printf("Input:");
scanf("%d%d",&n,&k);
printf("\nAll Plan: %d\n",fun(n,k));
}