(1) 先将要排列的数据存入数组中;

(2) 再将数组元素从小到大排序;

(3) 每次调用next_permutation函数,都只会进行1次排列,若数组元素完全变为从大到小的排列,则该函数返回0

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("%dn",a[i]);  
        }  
        while(next_permutation(a,a+n)) //每一次都会重新排列一次,直到排列为完全从大到小
        {  
            for(i=0;i<n;i++)  
             {  
                if(i!=n-1)printf("%d ",a[i]);  
                else printf("%dn",a[i]);  
            }  
        }     
        cout<<endl;
    }  
}  

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!