P1706 全排列问题

简介: P1706 全排列问题

59c3cf87bbda4faaacb39034b4fadbbb.png

位置x不断向右移动,同时dfs

代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 10;
int n;
int vis[maxn]; // 已选
int a[maxn];
int ans[maxn];
int f(int x) // x表示枚举到了哪个位置
{
     if (x > n)//递归结束
     {
          for (int i = 1; i <= n; i++)
          {
               cout << setw(5) <<ans[i];//保留五个场宽
          }
          cout << endl;
     }
     for (int i = 1; i <= n; i++)
     {
          if (!vis[i])//没选,就选
          {
               vis[i] = 1; // 选择
               ans[x] = i; // 记录选择的数
               f(x + 1);   // 继续看下一个数
               // 恢复现场
               vis[i] = 0;
               ans[x] = 0;
          }
     }
}
int main() // 依次枚举每个位置放哪个数
{
     cin >> n;
     f(1);
}


相关文章
|
6月前
|
Java
leetcode-46:全排列
leetcode-46:全排列
42 1
|
1月前
|
算法
Leetcode第46题(全排列)
这篇文章介绍了LeetCode第46题“全排列”的解题方法,使用深度优先搜索(DFS)和回溯算法来生成给定数组的所有可能排列。
25 0
Leetcode第46题(全排列)
|
1月前
Leetcode第47题(全排列II)
LeetCode第47题要求返回一个包含重复数字序列的所有不重复全排列,通过深度优先搜索和去重策略来解决。
28 0
|
3月前
|
算法
LeetCode第46题全排列
LeetCode第46题"全排列"的解题方法,利用回溯法避免重复并确保元素的有序性,生成所有可能的排列组合。
LeetCode第46题全排列
|
3月前
|
算法
LeetCode第47题全排列II
LeetCode第47题"全排列II"的解题方法,通过排序和添加去重逻辑,使用回溯法避免生成重复的排列组合。
|
6月前
|
存储
全排列问题
全排列问题
21 0
1199:全排列
1199:全排列
187 0
|
6月前
|
Java
leetcode-47:全排列 II
leetcode-47:全排列 II
44 0
全排列
全排列,
39 0
|
机器学习/深度学习 算法 安全
LeetCode - #47 全排列 II
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。