从n个数中选出m个数|在n个数选取m个数中进行全排列

#include using namespace std; int a[100]; //存储排列的数 void function(int m,int k) { int i,j; for(i=m; i>=k; i--) { a[k]=i; if(k>1) function(i-1,k-1); else { for(j=a[0]; j>0; j--) cout<"\t"; cout<>n>>r; if(r>n) cout<<"输入n和r的值错误!"<

/* @brief 从n个数选取m个数并进行全排列 select(int n,int m) 从n个数中选取m个数 void rank(int m)对m个数进行全排列 */ #include #include void select(int n,int m); void rank(int k,int m); void swap(int x,int y,int data[]); int value[10]={2,4,5,7,9,12,15,23,46,78}; int data[10]={0}; //选取数存放在这里(位置从1-m,0位置存放选取数的个数m) int arr[10]={0}; //全排列的数据 int count; //数据总数 int size; //排序个数int main() {count=10; size=2; printf("Hello world!\n"); data[0]=size; select(count,size); return 0; }void select(int n,int m) { int i,j; for(i=n; i>=m; i--) { data[m]=value[i-1]; if(m>1) select(i-1,m-1); else { printf("选取的%d个数如下:\n",data[0]); for(j=data[0]; j>0; j--) { printf("%d ",data[j]); arr[j-1]=data[j]; } printf("\n"); printf("对选出的%d个数进行全排列表示如下:\n",data[0]); rank(0,size); } } }void rank(int k,int n) { int i; int j; for(i=k; i

    推荐阅读