赞
踩
#include <stdio.h> #include <stdlib.h> //从n个元素的数组a中,取m个元素的组合 bool zuhe(int a[],int n,int m) { //p[x]=y 取到的第x个元素,是a中的第y个元素 int index,i,*p; p=(int*)malloc(sizeof(int)*m); if(p==NULL) return false; index=0; p[index]=0;//取第一个元素 while(true) { if(p[index]>=n) {//取到底了,回退 if(index==0) {//各种情况取完了,不能再回退了 break; } index--;//回退到前一个 p[index]++;//替换元素 } else if(index==m-1) {//取够了,输出 for(i=0;i<m;i++) { printf("%d,",a[p[i]]); } printf("/n"); p[index]++; //替换元素 } else {//多取一个元素 index++; p[index