(DS1.5.9)POJ 1833 排列(生成当前排列的下一排列)
/* * POJ_1833.cpp * * Created on: 2013年10月24日 * Author: Administrator */ #include <iostream> #include <cstdio> #include <algorithm> using namespace std; int a[1100]; int main() { int t; scanf("%d", &t); while (t--) { int n, k; scanf("%d%d", &n, &k); int i, j; for (i = 0; i < n; ++i) { scanf("%d", &a[i]); } for (i = 0; i < k; ++i) { /** * 如果这个已经是最后一个排列,则变成第一个排列 * next_permutation(a, a + n) :生成当前排列的下一个排列. * 如果返回0,则代表已经是最后一个排列.否则表示生成下一个排列成功 */ if (next_permutation(a, a + n) == 0) { for (j = 0; j < n; ++j) { a[j] = j + 1; } } } for (i = 0; i < n - 1; ++i) { printf("%d ", a[i]); } printf("%d\n", a[n - 1]); } return 0; }
补充:软件开发 , C++ ,