#include<stdio.h>
void quanpai(int a[5],int p,int q);
void jiaohuan(int a[5],int p,int q);
void shuchu(int a[5])
{
int i;
for(i=0;i<5;i++)
printf("%d ",a[i]);
printf ("\n");
}
int main()
{
int a[]={1,2,3,4,5};
quanpai(a,0,5);
return 0;
}
void quanpai (int a[5],int p,int q)
{
int i;
if(p==q)
{
shuchu(a);
}
else
{
int i=0;
for(i=p;i<q;i++)
{
jiaohuan(a,i,p);//交换不论先传哪个
quanpai(a,p+1,q);//传入p+1到q 范围逐渐变小 小心(不传入i,会出错)
jiaohuan(a,p,i);//
}
}
}
void jiaohuan(int a[5],int p,int s)
{
int t=a[s];
a[s]=a[p];
a[p]=t;
}
全排列(深度优先搜索)
最新推荐文章于 2024-01-30 20:25:13 发布