枚举排列
题目
输入正整数n(表示要枚举元素 的个数),然后输入n个数,输出该n个数所有的排列,不允许有重复。
样例
样例1:
输入:3
1 2 3
输出:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
样例2:
输入:3
1 1 1
输出:1 1 1
解题思路:
从字典序最小排列开始,不停的求下一个排列。用到c++的STL提供的一个库函数next_permutation
代码:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,p[10];
scanf("%d",&n);
for (int i=0;i<n;i++)
{
scanf("%d",&p[i]);
}
sort(p,p+n);
do{
for (int i=0;i<n;i++)
{
printf("%d ",p[i]);
}
printf("\n");
}while(next_permutation(p,p+n));
return 0;
}