生成12345数字的全排列
暴力的代码
#include <stdio.h>
int main()
{
int a,b,c,d,e;
for (a=1;a<=5;a++)
for (b=1;b<=5;b++)
for (c=1;c<=5;c++)
for (d=1;d<=5;d++)
for (e=1;e<=5;e++)
{
if (a!=b&&a!=c&&a!=d&&a!=e
&&b!=c&&b!=d&&b!=e
&&c!=d&&c!=e
&&d!=e)
printf("%d%d%d%d%d\n",a,b,c,d,e);
}
return 0;
}
递归方法:
#include<iostream>
using namespace std;
int c=0;
void swap(char *p,char *q)
{
int t=*p;
*p=*q;
*q=t;
}
void f1(char *a,int k,int m)
{
int i;
if (k==m)
{
c++;
puts(a);
return ;
}
else
{
for (i=k;i<m;i++)
{
swap(a[i],a[k]);
f1(a,k+1,m);
swap(a[i],a[k]);
}
}
}
int main()
{
char a[6]="12345";
f1(a,0,5);
cout<<endl<<"共生成"<<c<<"个排列";
return 0;
}