#include<stdio.h>
#include<stdlib.h>
#define M 4
int main()
{ const int N=10;
void combie(int a[],int b[],int n,int m);
int b[M];
int a[N]={1,2,3,4,5,6,7,8,9,10};
combie(a,b,N,M);
system("pause");
}
void combie(int a[],int b[],int n,int m )//如何求得m个数这个算法又是如何想到的,
{ //我认为是:每次取最高位的数 从剩下的n-1个数中求m-1个数 这有是同样的问题 所以可以递归来球。
//递归总是把问题化为更加小的规模来求取。递归的终止条件是m>1;
for(int i=n;i>=m;i--)
{
b[m-1]=i-1;
if(m>1) combie(a,b,i-1,m-1);
else
{
for(int j=M-1;j>=0;j--)
printf("%d ",a[b[j]]);
printf("/n");
}
}
}
组合数算法分析 以10选4为例
最新推荐文章于 2021-03-07 22:45:50 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)