简单深度优先搜索
2025-08-07 22:06:13
发布于:浙江
2阅读
0回复
0点赞
思路详情见代码
#include <bits/stdc++.h>
using namespace std;
int n;
int a[10];//存放全排列的结果
bool f[10];//标记哪些数使用过
void print(){
for(int i = 1;i <= n;i++){
cout<<a[i];
if(i != n){
cout<<" ";
}else{
cout<<endl;
}
}
}
//递归函数:为a数组每个元素赋值
void fun(int k){
for(int i = 1;i <= n;i++){
//如果i这个数没有被用过,则填写到下标为k的位置
if(f[i] == false){
a[k] = i;
//标记数字i被选用了
f[i] = true;
//如果a中存储了n个元素,输出结果,否则递归为k+1的下标赋值
if(k == n){
print();
}else{
fun(k+1);
}
//回溯到前一个状态,标记i没有被用过
f[i] = false;
}
}
}
int main(){
cin>>n;
//为a数组的下标为1的位置赋值
fun(1);
}
这里空空如也
有帮助,赞一个