P1706 全排列问题

全排列问题

题目描述

按照字典序输出自然数 \(1\)\(n\) 所有不重复的排列,即 \(n\) 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。

输入格式

一个整数 \(n\)

输出格式

\(1 \sim n\) 组成的所有不重复的数字序列,每行一个序列。

每个数字保留 \(5\) 个场宽。

样例 #1

样例输入 #1

3

样例输出 #1

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

提示

\(1 \leq n \leq 9\)

2.题解

2.1 排列枚举

思路:使用next_permutation函数

思路同排列枚举,利用next_permutation,不断提升字节序,输出不同的排列组合即可

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin >> n;
	vector<int> arr(n);
	for(int i = 0; i < n; i++)
		arr[i] = i + 1;
	do{
		for(int i = 0; i < n; i++){
			cout << setw(5) << arr[i];
		}
		cout << endl;
	}while(next_permutation(arr.begin(), arr.end()));
}
posted @ 2024-02-16 22:02  DawnTraveler  阅读(19)  评论(0编辑  收藏  举报