排列组合问题

来源:互联网 发布:nginx nodejs完美搭配 编辑:程序博客网 时间:2024/05/19 18:44

排列:

#include <stdio.h>#include <stdlib.h>void swap(int *a,int *b){int flag;flag=*a;*a=*b;*b=flag;}void print(int *s,int len){for(int i=0;i<len;i++)printf("%d ",s[i]);printf("\n");}void pailie(int *a,int length,int start,int end){if(a==NULL && length < 0)return;if(start == end)print(a,length);for(int i=start;i<length;i++){swap(&a[0],&a[i]);pailie(a,length,start+1,end);swap(&a[i],&a[0]);}}void main(){int a[3]={1,2,3};pailie(a,3,0,2);}

答案:

2 1 33 2 11 2 33 1 22 3 11 2 3


组合:

#include <time.h>#include <iostream>using namespace std;# define      MAXN      100int a[MAXN];int counts=0;void comb(int m,int k){     int i,j;      for (i=m;i>=k;i--)      {     a[k]=i;          if (k>1)              comb(i-1,k-1);          else          {                 counts++;                            for (j=a[0];j>0;j--)                  printf("%d ",a[j]);              printf("\n");                        }      }}int main(){         int m,k;      cout<<"m,k:"<<endl;      cin>>m>>k;            counts=0;      a[0]=k;      comb(m,k);  cout<<counts<<endl;      return 0;}

答案:

m,k:5 35 4 35 4 25 4 15 3 25 3 15 2 14 3 24 3 14 2 13 2 110Press any key to continue


原创粉丝点击