标签:
使用dfs实现1至n全阵列。
我的方法是从所述第一位置开始,使用dfs看上去就像每个头号位置,
当某个位置。从小到大枚举1至n所有号码,打假说
尚未使用之前在这个位置上的几个选择这个号码。然后搜索下
职位数值。
我的代码例如以下:
#include<iostream>
#include<cstring>
using namespace std;
int perm[10000],used[10000],num;
void init()
{
int i;
memset(used,0,sizeof(used));
scanf("%d",&num);
for(i=0;i<num;i++)
perm[i]=i+1;
}
void out()
{
int i;
for(i=0;i<num;i++)
{
if(i)
printf(" ");
printf("%d",perm[i]);
}
printf("\n");
}
void dfs(int pos)
{
int i;
if(pos==num)
{
out();
return;
}
for(i=1;i<=num;i++)
if(!used[i])
{
perm[pos]=i;
used[i]=1;
dfs(pos+1);
used[i]=0;
}
}
void permutation()
{
init();
dfs(0);
}
int main()
{
permutation();
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
标签:
原文地址:http://www.cnblogs.com/lcchuguo/p/4732824.html