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);
}


相关文章
|
1月前
|
Java
leetcode-46:全排列
leetcode-46:全排列
27 1
|
5天前
|
C++
【洛谷 P1706】全排列问题 题解(全排列)
该问题要求按字典序输出从1到n的所有不重复排列。输入为整数n,输出为每行一个的数字序列,每个数字占5个宽度。样例输入3,输出6行全排列。代码使用C++,通过`next_permutation`函数生成所有排列。注意n的范围是1到9。
6 0
|
1月前
|
存储
全排列问题
全排列问题
11 0
|
11月前
|
C++
1199:全排列
1199:全排列
131 0
|
1月前
|
Java
leetcode-47:全排列 II
leetcode-47:全排列 II
25 0
|
9月前
全排列
全排列,
25 0
|
10月前
|
机器学习/深度学习 存储 算法
算法训练Day29|* 491.递增子序列* 46.全排列* 47.全排列 II
算法训练Day29|* 491.递增子序列* 46.全排列* 47.全排列 II
|
12月前
|
机器学习/深度学习 算法 安全
LeetCode - #47 全排列 II
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
leetcode:47.全排列 II
给定一个可包含重复数字的序列,返回所有不重复的全排列。
38 0
leetcode:46.全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。
38 0