程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> C語言如何實現從11選5全組合輸出

C語言如何實現從11選5全組合輸出

編輯:C語言問答

C語言如何實現從11選5全組合輸出

從11選5全組合輸出(每組有不同的5個數字組成,且每個數碼只能取1~11之間的數)
並且滿足條件每組中1,2,3中最少有1至2個

高手來啊要有源代碼

最佳回答:

#include <stdio.h>
/*
*這個函數的功能是從n個數中選取m個數來排列,並且打印出符合條件的結果(即每組中1,2,3中最少有1至2個,沒有包括號1,2,3都有的)
*數組a是等選取的原始數據,數組b用來保存中間結果,M用來控制打印的參數,count所指向的地址保存符合條件的組合的個數
*/
void combine( int a[], int n, int m,  int b[], int M ,int *count)
{
 int i,j,t;
 for(i=n; i>=m; i--)
 {
  b[m-1] = i - 1;
  if (m > 1)
   combine(a,i-1,m-1,b,M,count);
  else
  {
   t=0;
   for(j=M-1; j>=0; j--)
    if(a[b[j]]==1||a[b[j]]==2||a[b[j]]==3)
     t++;
   if(t!=1&&t!=2)//判斷包括1,2,3中的1個或者2個的組合
    continue;
   for(j=M-1; j>=0; j--)
    printf("%d ",a[b[j]]);//打印出符合條件的組合
   printf("\n");
   *count=(*count)++;
  }
 }
}
int main()
{
 int a[]={1,2,3,4,5,6,7,8,9,10,11};
 int b[11];
 static int count=0;
 combine(a,11,5,b,5,&count);//11選5
 printf("count=%d\n",count);//打印出符合條件的個數
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved