c语言中怎样把n个数排列 得到所有排列情况

来源:百度知道 编辑:UC知道 时间:2024/05/26 23:03:19
急求 谢谢了

#include <stdio.h>
inline void Swap(char& a, char& b)
{// 交换a和b
char temp = a;
a = b;
b = temp;
}

void Perm(char list[], int k, int m)
{ //生成list [k:m ]的所有排列方式
int i;
if (k == m) {//输出一个排列方式
for (i = 0; i <= m; i++)
putchar(list[i]);
putchar('\n');
}
else // list[k:m ]有多个排列方式
// 递归地产生这些排列方式
for (i=k; i <= m; i++) {
Swap (list[k], list[i]);
Perm (list, k+1, m);
Swap (list [k], list [i]);
}
}

int main()
{
char s[]="123";
Perm(s, 0, 2);
return 0;
}

说明:把要排列的元素放在数组里,进行排序,下面以五个元素为例给出源程序,不是很困难,你看一下就会明白。
#include <iostream.h>
void main()
{
int a[5]={1,2,3,4,5},i,j,k,l,m;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
for(k=0;k<5;k++)
for(l=0;l<5;l++)
for(m=0;m<5;m++)
if((i!=j)&&(i!=k)&&(i!=l)&&(i