题目描述
从键盘读入n个整数(每个数都是1~9之间的数),输出这n个整数的全排列(数字不能重复)。
输入
第1行输入一个整数n(1<=n<=8)
第2行输入n个不相等的整数(1<=每个数<=9)。
输出
输出若干行,每行包括n个数据,表示一种排列方案,所有的排列按字典码从小到大排序输出。
样例输入
3 2 4 6
样例输出
2 4 6 2 6 4 4 2 6 4 6 2 6 2 4 6 4 2
我不用递归!气不气!
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int arr[12]={0};
signed main()
{
int n;
cin >> n;
for(int i=0;i<n;i++) cin >> arr[i];
sort(arr,arr+n); //求出最小排列
do
{
for(int i=0;i<n;i++)
cout << arr[i] << ' ';
cout << endl;
}while(next_permutation(arr,arr+n)); //下一个排列
return 0;
}