首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

(DS1.5.9)POJ 1833 排列(生成目前排列的下一排列)

2013-10-25 
(DS1.5.9)POJ 1833 排列(生成当前排列的下一排列)/* * POJ_1833.cpp * *Created on: 2013年10月24日 *Auth

(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;}

热点排行