Description |
大家知道,给出正整数 n,则 1 到 n 这 n 个数可以构成 n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如 n=3 时,列出 1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六个排列。 给出某个排列,求出这个排列的下一个排列,如果遇到最后一个排列,则下一排列为第1 个排列,即排列 1 2 3…n。 比如:n = 3 给出排列 2 3 1,则它的下 1个排列为 3 1 2。 |
Input |
第一行是一个正整数 m,表示测试数据的个数,下面是 m 组测试数据,每组测试数据第一行是一个正整数 n( 1 <= n <= 6 ),第二行有 n 个正整数,是 1,2 … n的一个排列。 |
Output |
对于每组输入数据,输出一行,n 个数,中间用空格隔开,表示输入排列的下一个排列。 |
Sample Input |
2
4
1 2 3 4
6
2 1 6 5 4 3
|
Sample Output |
1 2 4 3
2 3 1 4 5 6
|
Hint |
Source |
2014 Winter Holiday Contest 3 这是一道关于排列生成的问题,所以用了一下递归算法,当然更简单的是用c++的STL类库中的生成排列函数next_permutation() 我的代码还是很繁杂的……
|
Hrbust Online Judge 排列问题
最新推荐文章于 2019-02-17 09:19:00 发布