总结:dfs只满足位置个数<=要排列数字个数(9个位置<=1-9总共9个数字)
1-4排列到4个位置,位置个数大于4则不满足
#include<stdio.h>
int m[5];//所求的5个数放在这个数组中
int v[5]={0};//9个数字用来标志为0;
void out()
{
for(int i=1;i<5;i++)
{
printf("%d ",m[i]);
}
printf("\n");
}
void dfs(int n)//深度搜索:找出不同的5位数;
{
if(n==5)
{out();//查看排列是fong正确
return ;
}
for(int i=1;i<=4;i++)
{
if(v[i]==0)
{
v[i]=1;
m[n]=i;
dfs(n+1);
v[i]=0;
}
}
}
main()
{
dfs(1);
return 0;
}
5个位置则错误,具体原因还没研究出来
#include<stdio.h>
int m[6];//所求的5个数放在这个数组中
int v[5]={0};//9个数字用来标志为0;
void out()
{
for(int i=1;i<6;i++)
{
printf("%d ",m[i]);
}
printf("\n");
}
void dfs(int n)//深度搜索:找出不同的5位数;
{
if(n==6)
{out();//查看排列是fong正确
return ;
}
for(int i=1;i<=4;i++)
{
if(v[i]==0)
{
v[i]=1;
m[n]=i;
dfs(n+1);
v[i]=0;
}
}
}
main()
{
dfs(1);
return 0;
}