2621: 全排列
![去爱问答提问或回答](http://210.33.181.162/acmhome/forum/images/iqa.gif)
Time Limit(Common/Java):1000MS/10000MS Memory Limit:65536KByte
Total Submit: 539 Accepted:171
Total Submit: 539 Accepted:171
Description
任意输入n个不重复的整数序列,输出序列的全排列。
Input
测试数据有多组,第一行是整数t(0<t<20),代表测试组数。每组测试数据有两行,第一行是整数的个数n(0<n<6),第二行是n个不重复的整数。
Output
按递增的顺序输出序列的全排列。每个测试数据后面输出一个空行。
Sample Input
1
3
1 3 5
Sample Output
1 3 5
1 5 3
3 1 5
3 5 1
5 1 3
5 3 1
Source
#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
int main()
{
int t,n,i,j,a[10];
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i = 0; i < n; i++)
scanf("%d",&a[i]);
sort(a,a+n);//千万要注意排序
for(i = 0; i < n -1; i++)
printf("%d ",a[i]);
printf("%d\n",a[n - 1]);
while(next_permutation(a,a+n))//next_permutation 就是全排序的一个函数。next_permutation是C++的STL中一个函数,所以头文件用C++。
{
for(i = 0; i < n - 1; i++)
printf("%d ",a[i]);
printf("%d\n",a[n - 1]);
}
printf("\n");
}
return 0;
}