题目来源:http://poj.org/problem?id=1833 这一题主要是STL算法中next_permutation(),求全排列函数的应用: /* ** 这一题STL,next_permutation(首地址,末地址)的应用,这个函数的意思是求得下一次排列 */ #include <algorithm> #include <iostream> using namespace std; int main() { //m 是测试案例 //n 是排列数 //k 是下k个排列 int m,n,k; int i,j; int data[1024]; scanf("%d",&m); for(i=0;i<m;i++) { memset(data,0,sizeof(data)); scanf("%d%d",&n,&k); for(j=0;j<n;j++) { scanf("%d",&data[j]); } //这一题的关键也就这个函数 for(j=0;j<k;j++) { next_permutation(data,data+n);//求得下K个排列 } for(j=0;j<n-1;j++) { printf("%d ",data[j]); } printf("%d/n",data[j]); } return 0; }