https://blog.youkuaiyun.com/qq_40763929/article/details/81629800
#include<iostream>
#include<cmath>
using namespace std;
int p[10]={0};
bool vis[10]={0};
int n;
void dfs(int x)
{
if (x==n+1)
{
for(int i=1;i<=n;i++)
cout<<p[i]<<" ";
cout<<endl;
return ;
}
for (int i=1;i<=n;i++)
{
if (vis[i]==false )
{
p[x] = i;
vis[i] = true;
dfs(x+1);
vis[i] = false;
}
}
}
int main()
{
while (cin>>n)
{
dfs(1);
}
return 0;
}
本文介绍了一个使用C++实现的回溯算法示例,该算法用于解决排列问题。通过深度优先搜索(DFS)遍历所有可能的解空间,找到所有符合条件的解。文章包含完整的代码实现,展示了如何使用vis数组记录已访问过的元素,以及如何通过递归调用dfs函数进行深度遍历。
1万+

被折叠的 条评论
为什么被折叠?



