POJ 1833 排列 (STL)

排列

http://poj.org/problem?id=1833

Time Limit: 1000MS

Memory Limit: 30000K

Description

题目描述:

大家知道,给出正整数n,则1到n这n个数可以构成n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如n=3时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六个排列。

任务描述:

给出某个排列,求出这个排列的下k个排列,如果遇到最后一个排列,则下1排列为第1个排列,即排列1 2 3…n。

比如:n = 3,k=2 给出排列2 3 1,则它的下1个排列为3 1 2,下2个排列为3 2 1,因此答案为3 2 1。

Input

第一行是一个正整数m,表示测试数据的个数,下面是m组测试数据,每组测试数据第一行是2个正整数n( 1 <= n < 1024 )和k(1<=k<=64),第二行有n个正整数,是1,2 … n的一个排列。

Output

对于每组输入数据,输出一行,n个数,中间用空格隔开,表示输入排列的下k个排列。

Sample Input

3

3 1

2 3 1

3 1

3 2 1

10 2

1 2 3 4 5 6 7 8 9 10

Sample Output

3 1 2

1 2 3

1 2 3 4 5 6 7 9 8 10

完整代码:

/*469ms,168KB*/

#include<cstdio>
#include<algorithm>
using namespace std;  

int num[1024];  

int main(void)
{
    int m, n, k;
    scanf("%d", &m);
    while (m--)
    {
        scanf("%d%d", &n, &k);
        for (int i = 0; i < n; ++i)
            scanf("%d", &num[i]);
        while (k--)
            next_permutation(num, num + n);
        printf("%d", num[0]);
        for (int i = 1; i < n; ++i)
            printf(" %d", num[i]);
        putchar('\n');
    }
    return 0;
}

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据
, 测试
, poj
, 整数
, 个数
, 排列
, 顺序
一行
poj 1833、poj 全排列、stl全排列、stl 排列组合、estebel1833,以便于您获取更多的相关知识。

时间: 2024-11-08 23:20:32

POJ 1833 排列 (STL)的相关文章

POJ题目分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

poj分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

poj 题型分类

主流算法: 1.搜索 //回溯 2.DP(动态规划) 3.贪心 4.图论 //Dijkstra.最小生成树.网络流 5.数论 //解模线性方程 6.计算几何 //凸壳.同等安置矩形的并的面积与周长 7.组合数学 //Polya定理 8.模拟 9.数据结构 //并查集.堆 10.博弈论 1. 排序 1423, 1694, 1723, 1727, 1763, 1788, 1828, 1838, 1840, 2201, 2376, 2377, 2380, 1318, 1877, 1928, 1971,

hduoj题目分类

基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093.1094.1095.1096.1097.1098.1106.1108.1157.1163.1164.1170.1194.1196.1197.1201.1202.1205.1219.1234.1235.1236.1248.1

ACM练级

一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的 ,主要时间是花在思考算法上,不是花在写程序与debug上.  下面给个计划你练练: 第一阶段: 练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码, 因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打 出来.  1.最短路(Floyd.Dijstra,BellmanFord)  2.最小生成树(先写个prim,kruscal要用并查集,不好写)  3.大数(

【OJ】排列 n! STL函数next_permutation // Anagram / hzu.acmclub.com10317 / poj 1256

题目链接:点击打开链接 <pre name="code" class="cpp">/* 排列 n! poj1256 Anagram */ #include<iostream> #include<cstring> #include<cstdio> #include<cctype> #include<algorithm> using namespace std; bool cmp(char a,ch

POJ 3761 Bubble Sort:用反序表分析排列数

http://poj.org/problem?id=3761 1. 先介绍反序表的概念: 令bi(1<=i<=n)为位于i左边但是大于i的元素个数,就能得到排列a1,a2,...,an的反序表b1,b2,...,b3 比如说,排列 5 9 1 8 2 6 4 7 3 有反序表 2 3 6 4 0 2 2 1 0(在1左边且大于1的有2个,在2左边且大于2的有3个,--) 2. 关键结论: 由1知,第1个元素的反序数取值范围是[0,n-1],第i个元素的反序数取值范围是[0,n-i],最后一个元

STL之Map

概述 Map是标准关联式容器(associative container)之一,一个map是一个键值对序列,即(key ,value)对.它提供基于key的快速检索能力,在一个map中key值是唯一的.map提供双向迭代器,即有从前往后的(iterator),也有从后往前的(reverse_iterator). map要求能对key进行<操作,且保持按key值递增有序,因此map上的迭代器也是递增有序的.如果对于元素并不需要保持有序,可以使用hash_map. map中key值是唯一的,如果马匹

体验Visual C++.NET 2005中的STL

为了更好的使STL适合.NET开发,Visual C++产品组,在2005版的Visual C++中重新设计了STL,并命名为STL.NET,从Beta1版本的产品中开始提供. 在STL.NET的设计中,STL的实现使用了CLI泛型和C++模版机制.2005版本的C++将加入C++/CLI动态编程的支持,应当会成为最能够满足程序员设计的语言. 给予程序员丰富的选择 总共有三个容器库可供程序员用于操作CLI类型,这三个容器库建于三种类型参数化模型之上. 原先元素类型存储的Systems::Coll