DFS(深度优先搜索)
DFS遍历方式演示
这个做法很直观,每一个点只能走下属的两个分支的其中一个,但是每一次都要从头开始搜,有大量的重复计算,这样非常耗时
以下为主要代码
void dfs(int x)
{
if (x == n + 1)
{
for (int i = 1; i <= n; i++)
{
printf("%5d", q[i]);
}
cout << endl;
return;
}
for (int i = 1; i <= n; i++)
{
if (v[i] == 0);
{
q[x] = a[i];
v[i] = 1;
dfs(x + 1);
v[i] = 0;
}
}
return;
}