#include<stdio.h>
const int max=100;
int path[max];
int m=4,flag=0;
void shuchu(int b[],int m)
{
int i=0;
for(i=0;i<m;i++)
{
printf("%d",b[i]);
if(i==m-1) printf("\n");
}
flag++;
}
void dfs(int a[max],int tnt)
{
if (tnt==1)
{
path[m-1]=a[0];
shuchu(path,m);
return;
}
int b[4];
for(int i=0;i<tnt;i++)
{ /*printf("%d",a[i]);*/
path[m-tnt]=a[i];
int n=0;
for (int l=0;l<tnt;l++)
{
if(l!=i)
{
b[n]=a[l];
n++;
}
}
int k=tnt-1;
dfs(b,k);
/如果用这个dfs(b,tnt--),,代替上面的两句话,,那么你反了一个大错因为这样以后他会改变tnt的值,,会直接不执行i=1的循环
}
//return;
}
void main()
{
int a[4]={1,2,3,4};
dfs(a,4);
printf("%d\n",flag);
}
5.6号全排列
最新推荐文章于 2022-12-03 13:28:12 发布