全排列递归算法(一)------------------第一篇BLOG,随便写点吧!

//递归全排列(一)

#include "iostream.h"
int pnum;
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++)
cout<<list[i];
cout<<endl;
pnum++;
}
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]);
}
}

main()
{
pnum=0;
char s[]="ABCDE";
Perm(s,0,4);
cout<<"/n"<<s<<"的全排列共有"<<pnum<<"个"<<endl;
}

你可能感兴趣的:(Blog)