首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

组合的C语言兑现

2013-02-05 
组合的C语言实现int combine(int a[],int sub){ //a[1..?]表示候选集,sub表示一个排列(组合)的元素个数 {i

组合的C语言实现

int combine(int a[],int sub){ //a[1..?]表示候选集,sub表示一个排列(组合)的元素个数 {    int total=sizeof(a);    int order[sub+1];    int count=0;//符合条件的排列(组合)的个数    order[0]=-1;    for(int i=1;i<=sub;i++)       order[i]=i;    int k=sub;    bool flag=true;    while(order[0]!=-1){       if(flag){          for(i=1;i<=sub;i++)//输出符合要求的组合             printf("%d ",a[order[i]]);          printf("\n");          count++;          flag=false;       }       order[k]++;       if(order[k]==total+1){          order[k--]=0;          continue;       }       //...       //在此加入order[k]的限制条件       //如果条件满足,则往下执行       //否则continue;       if(k<sub){          order[++k]=order[k-1];          continue;       }       if(k==sub)          flag=true;    }    return count; } 

热点排行