当前位置: 移动技术网 > IT编程>开发语言>C/C++ > 【TOJ 2621】全排列(STL的next_permutation)

【TOJ 2621】全排列(STL的next_permutation)

2018年03月21日  | 移动技术网IT编程  | 我要评论

非主流歌曲dj,1234电影,义乌在线

描述

任意输入n个不重复的整数序列,输出序列的全排列。

输入

测试数据有多组,第一行是整数t(0<t<20),代表测试组数。每组测试数据有两行,第一行是整数的个数n(0<n<6),第二行是n个不重复的整数。

输出

按递增的顺序输出序列的全排列。每个测试数据后面输出一个空行。

样例输入

1
3
1 3 5

样例输出

1 3 5
1 5 3
3 1 5
3 5 1
5 1 3
5 3 1

#include<iostream>
#include<algorithm>
using namespace std;
int cmp(int a,int b)  
{  
    return a<b;  
}  
int main()  
{  
    int a[100],t,n,i;  
    cin>>t;
    while(t--)  
    {  
        cin>>n; 
        for(i=0;i<n;i++)    
            scanf("%d",&a[i]);   
             
        sort(a,a+n,cmp);               //一定要先将数组元素从小到大排序
        for(i=0;i<n;i++)               //先把第一个(完全从小到大)的排序输出
        {  
            if(i!=n-1)  
            printf("%d ",a[i]);  
            else   
            printf("%d\n",a[i]);  
        }  
        while(next_permutation(a,a+n)) //每一次都会重新排列一次,直到排列为完全从大到小
        {  
            for(i=0;i<n;i++)  
             {  
                if(i!=n-1)printf("%d ",a[i]);  
                else printf("%d\n",a[i]);  
            }  
        }     
        cout<<endl;
    }  
}  

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网