用C语言如何编程实现从三个数组中各抽取几个数进行组合的问题?
例:从数组A中抽取3个数,数组B中抽取2个数,数组C中抽取1个数,组成6个数的组合,求源程序。A={3,4,6,7,8,9,11,13,14,15,16,18,19,20,24,27,28,29,33}
B={1,2,10,12,17,21,22,25,26,30,31,32}
C={5,23}
#include<stdio.h> #include<time.h> #include<stdlib.h> void fun(int,int,int); int D[6]; //定义数组D,抽取的数全放在这里 void main() { int i; int A[19]={3,4,6,7,8,9,11,13,14,15,16,18,19,20,24,27,28,29,33}; int B[12]={1,2,10,12,17,21,22,25,26,30,31,32}; int C[2]={5,23}; fun(A,19,3); fun(B,12,2); fun(C,2,1); for(i=0;i<6;i++) printf("%d\t",D[i]); } void fun(int a[],int m,int n){ //抽取函数,m 表示数组长度,n 表示要抽取几个数 static int i=0; //定义成静态变量,知道含义吧?不知道看书去 int j=0,k,t; srand(time(NULL)); for(i;i<6;i++){ t=rand()%(m-j+1); D[i]=a[t]; for(k=t;k<m-j-1;k++) //抽取一个数后,把数组中的这个数删除,防止下次再次被抽中 a[k]=a[k+1]; if(++j==n){ //抽满所需的个数就中断 i++; break; } } }