140题解:数字全排列
2022-11-11 13:34:15
发布于:江苏
175阅读
1回复
3点赞
我应该是第一个发题解的吧!!吼吼!
入门深搜题,注释全部都在代码里
坑的地方就在输出的最后不能有空格,要进行判断
#include <??ts/stdc++.h>
using namespace std;
bool used[11];//false代表没被使用过,true代表被使用过
int a[11];
int n;
//s表示当前是第几个数
void dfs(int s){
if(s>n){
for(int i=1;i<=n;i++){
if(i!=n)
cout << a[i] << " ";
else
cout << a[i];
}
cout << endl;
return;
}
//去查找某一个数有没有被使用过
for(int i=1;i<=n;i++){
//如果当前数没有被使用过
if(!used[i]){
//把当前数标记为使用过
used[i]=true;
//将i存放起来
a[s] = i;
//深搜下一个数
dfs(s+1);
//回溯 将i变成未使用状态
used[i] = false;
}
}
}
int main(){
cin >> n;
dfs(1);
return 0;
}
全部评论 1
好像加上空格也能过
2024-09-16 来自 浙江
0
有帮助,赞一个