組合(combination)
數學的重要概念之一。從n個不同元素中每次取出m個不同元素(0≤m≤n),不管其順序合成一組,稱為從n個元素中不重復地選取m個元素的一個組合。所有這樣的組合的總數稱為組合數。
演算法思想
就是把從N個數取出M個數,每取一個數,就從剩余的N-1個數取剩余的M-1個數,當去完的時候輸出結果就行了。
代碼實作
#include <stdio.h>
#define MAXIN 10
int a[MAXIN]={0};//初始化陣列
int counts=0;
//實作組合功能
void Combination(int n, int m)
{//從n中取出m個數
int i,j;
if (m<=0)
{//當m=0;退出回圈
for (j=1;j<=counts;j++)
printf("%d ",a[j]);
printf("\n");
return;
}
for (i=n;i>=m;i--)
{
a[m]=i;
Combination(i-1,m-1);//從剩余的n-1個數取出m-1個數
}
}
int main()
{
int n, m;
scanf("%d%d", &n, &m);
counts=m;
Combination(n, m);
return 0;
}
運行結果

uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/270024.html
標籤:C語言
上一篇:MiniDumpWriteDump API呼叫失敗,64位可用,X86失敗回傳2147942699,64位可用,X86失敗
下一篇:C語言實作全排列
