首页 > 试题广场 >

全排列

[编程题]全排列
  • 热度指数:4514 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
{\hspace{15pt}}给定一个整数 n,请按 字典序 输出数字 1\sim n 的所有排列。

输入描述:
{\hspace{15pt}}一行一个整数 n\left(1\leqq n\leqq 9\right)


输出描述:
{\hspace{15pt}}按字典序输出所有排列,每行输出 n 个整数,数字之间用单个空格分隔。
示例1

输入

3

输出

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

备注:

头像 Ldh1315109
发表于 2025-11-07 15:59:46
print('\n'.join(' '.join(map(str, p)) for p in permutations([i for i in range(1, II() + 1)])))
头像 牛客909198032号
发表于 2026-04-11 01:12:10
n = int(input()) b = [False] * (n + 1) # 下标 1~n,所以长度 n+1 更方便 path = [] def dfs(): if len(path) == n: print(' '.join(map(str, path))) 展开全文
头像 立花泷之介
发表于 2026-03-11 09:07:13
#include <iostream> #include <bits/stdc++.h> using namespace std; int n; vector<int> curr_list; vector<int> visited; // 有这两个全 展开全文
头像 ikun_ac
发表于 2025-08-08 22:28:48
题目链接 全排列 题目描述 给定一个整数 ,请按字典序输出数字 的所有排列。 输入: 一行一个整数 输出: 按字典序输出所有排列。每行输出 个整数,数字之间用单个空格分隔 解题思路 按字典序生成全排列有两种常见方法: 使用内置/标准库的“下一个排列”算法(next_permutati 展开全文
头像 ctrlcv战神
发表于 2026-03-21 15:15:07
#include<iostream> #include<cstring> #include<vector> using namespace std; int a[10]; bool f[10]; int n; void dfs(int x) { if(x& 展开全文
头像 1900201910072158499
发表于 2025-08-22 19:55:30
import java.util.Scanner; import java.util.ArrayList; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { // 递归生成全排列的方法 // listA: 当前已排列 展开全文
头像 舒露露
发表于 2026-04-08 17:37:27
package main import ( "fmt" "strconv" "strings" ) func main() { var n int fmt.Scan(&n) // 用于存储当前的排列结果 path 展开全文
头像 冷艳的西红柿刷牛客
发表于 2025-10-24 09:23:00
#include <iostream> using namespace std; int n; int vis[10]{0}; //c++引用传递需要显示指定为int *a,使用reference需要显示指定数组大小,所以可以使用指针方便一些 //相对于Java,可以使用&i 展开全文
头像 讲文明的小刺猬向光而行
发表于 2026-03-10 23:26:55
#include <stdio.h> int n; int path[10]; // 当前排列 int used[10]; // 标记数字是否已使用 // DFS生成排列 void dfs(int u) { // 终止条件:填满了n个数 if (u 展开全文
头像 Xue1_
发表于 2026-04-21 21:02:10
考察stl中next_permutation的运用 #include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; vector<int>a(n); 展开全文