#include <iostream>
using namespace std;
const int N = 10;
int nSize;
int Result[N];//记录路径
int Src[N];//原数组
bool IsUse[N];//记录当前元素是否使用
int nPos = 1;//记录层数
void Dfs()
{
if(nPos == nSize + 1)
{
for(int j = 1; j <= nSize; j++)
{
cout<<Result[j]<<" ";
}
cout<<endl;
return;
}
for(int i = 1; i <= nSize; i++)
{
//如果没被使用
if(IsUse[i])
{
IsUse[i] = false;
//记录下这条路径
Result[nPos] = Src[i];
//进入下一层
nPos++;
Dfs();
//恢复现场
nPos--;
IsUse[i] = true;
}
}
}
int main(int argc, char** argv)
{
fill(IsUse,IsUse+N,true);
cin>>nSize;
for(int i = 1; i <= nSize; i++)
{
cin>>Src[i];
}
Dfs();
return 0;
}
DFS解决全排列
最新推荐文章于 2024-04-24 18:48:41 发布
博客围绕LeetCode展开,涉及DFS(深度优先搜索)和数据结构相关内容。DFS是重要算法,在LeetCode题目解决中常结合数据结构使用,能有效处理各类问题,体现了信息技术领域算法与数据结构的紧密联系。
3570

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



