http://poj.org/problem?id=1833
next_permutation这个函数是用来全排列的,按字典的序进行排列,当排列无后继的最大值时,会执行字典升序排列,相当于排序;
当排列无后继的最大值时返回值为false,其他的为true;
也可以在其后加一个cmp函数
1 #include <stdio.h> 2 #include <iostream> 3 #include <algorithm> 4 5 using namespace std; 6 7 int main() 8 { 9 int k,n,m,a[1029]; 10 scanf("%d",&n); 11 while(n){ 12 n--; 13 scanf("%d%d",&m,&k); 14 for(int i=0;i<m;i++) 15 scanf("%d",&a[i]); 16 for(int i=0;i<k;i++) 17 next_permutation(a,a+m); 18 for(int i=0;i<m;i++) 19 { if(i==m-1) printf("%d\n",a[i]); 20 else printf("%d ",a[i]); 21 } 22 } 23 }
时间: 2024-10-11 14:27:19