两个函数功能分别 从n个数中选择m个数进行无序排列 和有序排列
#include<stdio.h>
#define m 3
int used[m]={0};
int data[10]={1,2,3,4,5};
int p[m];
int dataLength=5;
void permute(int pos,int selectPos)
{
if(pos==m)
{
for(int i=0;i<m;i++)
{
printf("%d,",p[i]);
}
printf("/n");
return;
}
for(int i=selectPos;i<dataLength;i++)
{
p[pos]=data[i];
permute(pos+1,i+1);
}
}
void permute(int pos)
{
if(pos==m)
{
for(int i=0;i<m;i++)
printf("%d,",p[i]);
printf("/n");
return;
}
for(int i=0;i<dataLength;i++)
{
if(!used[i])
{
used[i]++;
p[pos]=data[i];
permute(pos+1);
used[i]--;
}
}
}
int main()
{
permute(0,0);
printf("*****************************/n");
permute(0);
}