(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; } }
内容来源于网络如有侵权请私信删除
- 还没有人评论,欢迎说说您的想法!