- 首页 > it技术 > >
从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
推荐阅读