dfs算法框架,看代码无法理解,还是把每一步都画出来吧。
void dfs(int u, int n, int *vis, int *path)
{
if (u == n)
{
for (int i = 0; i < n; i++) printf("%d ", path[i]);
printf("\n");
return;
}
for (int i = 1; i <= n; i++)
{
if (!vis[i])
{
path[u] = i;
vis[i] = 1;
dfs(u+1, n, vis, path);
vis[i] = 0;
}
}
}
int main(int argc, _TCHAR* argv[])
{
int path[3];
int vis[4];
memset(path, 0, sizeof(path));
memset(vis, 0, sizeof(vis));
dfs(0, 3, vis, path);
return 0;
}
```![在这里插入图片描述](https://img-blog.csdnimg.cn/e47e5c76232c4e0c933e26f1b1231f2a.png)
这下清楚多了,原来是酱紫的呀~