[poj1833 排列]求数列的全排列中的后k项

ACM-排列 问题描述         大家知道,给出正整数 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 阅读详情
排列
Time Limit: 1000MS Memory Limit: 30000K
Total Submissions: 16791 Accepted: 6719

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

Source

qinlu@POJ

题目没意思。只是为了测一下一个所谓的快速输出。根据大家的直觉,这个快速输出一定没有Printf直接打印整数快,而且cout肯定没有printf快。但是本例可以看出,poj还真是有一点奇葩,输入直接上读入外挂,这个应该是没有问题的。输出部分,printf超时,cout500ms,递归putchar打印47ms...
1833Accepted324K47MSG++799B
#include <cstdio>
#include <algorithm>
using namespace std;

const int MAX = 10240;
int a[MAX];

inline int read() {
	char ch;
	while ((ch = getchar()) < '0' || ch > '9');
	int x = ch - '0';
	while ((ch = getchar()) >= '0' && ch <= '9') {
		x = (x << 3) + (x << 1) + ch - '0';
	}
	return x;
}

void Print(int x) {
	if (x == 0) return;
	Print(x / 10);
	putchar(x % 10 + '0');
}

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

这你也信?!!
Vivado SDK中LWIP库版本冲突与RTL8211FDI兼容性实战解析 本文深入解析Vivado 2019.1 SDK中LWIP 1.0库与RTL8211FDI千兆PHY芯片的版本冲突问题,并提供实战解决方案。通过手动移植高版本LWIP库、整合第三方驱动及优化BSP配置,有效解决了以太网通信兼容性问题,确保千兆性能稳定运行。 阅读详情

相关推荐

汇川机器人与PLC通信-ModbusTCP超详细案例

通过汇川机器人与PLC的ModbusTCP通信项目案例,我们可以了解通讯配置的过程,地址映射的方式,对接信号的转换,运行时序的逻辑等注意事项,帮助我们快速应用到项目中。

weixin_44166380的博客 1万+

next_permutation(排序后列)prev_permutation(排序前列)

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排列为第

无奈滴微笑 1014

elmos 524系列芯片笔记

芯片的工作工作原理:集成芯片Elmos524.03有发射回路和接收回路,手册有关的内部原理图,大致如下: 芯片会产生固有频率的电压信号,信号通过引脚DRV1、2输出给外部压电陶瓷片,产生固定频率的机械波,也就是所谓的超声波,超声波遇到障碍物时会反射,反射信号经过AINS、D引脚进入芯片,在芯片内部先后经过GAIN放大,滤波然后进入比较器,滤波后的信号(signal)同预先设定的阈值(threshold)比较产生信号输出。此信号最终会连接MCU处理器,需要重点关注。 基于这个内部的工作原

qq_38230916的博客 2484

C++之练习题31

1.大家知道,给出正整数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

花满楼 694

scratch lenet(4): 开根号的C语言实现

使用C语言,分别使用二分法、牛顿法、卡马克快速法,求解正实数的开根号。包括公式推导、代码实现、运行结果,不使用任何第三方库和C标准库的数学库。

baiyu33的博客 4969

国产麒麟系统中的PaddleOCR离线绿色部署:高效安全的文字识别新纪元

摘要:本文详细介绍了PaddleOCR在银河麒麟V10SP1系统上的离线部署方案。通过Conda虚拟环境隔离依赖,采用离线包安装方式实现无网络部署,支持80+语言识别。重点讲解了模型量化剪枝优化、多线程处理等性能调优技巧,并提供了完整的OCR识别代码示例。该方案具有数据本地化处理的安全优势,适用于医疗票据数字化等对隐私要求严格的场景,同时解决了模型加载失败、内存不足等常见问题。

墨夶的博客 1228

1833 排列

排列 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8218 Accepted: 3693 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个排列,如果遇到最后一个

kongming_acm的专栏 973

【专栏必读】王道考研408计算机组成原理万字笔记使用说明及章节导航

本文是为准备408王道计算机组成原理考试的学生精心整理的万字笔记,涵盖了从计算机系统概述、数据表示和运算到存储系统、指令系统等多个章节的重点内容。本文强调了学习笔记的重要性,并分享了学习建议,如按视频课逻辑记录,建立学科框架。笔记详细记录了每章的关键知识点,包括存储器、CPU、I/O系统的工作原理,还附带了习题和思维导图,旨在帮助考生高效复习。

快乐江湖的博客 9万+

关于排列(poj1833)问题

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...

逐梦者 3405

Vue+OpenLayers7入门到实战目录,OpenLayers7中文文档,OpenLayers7中文手册,OpenLayers7中文教程,OpenLayers7文档pdf

本篇作为《Vue+OpenLayers7入门到实战》所有文章的二合一汇总目录,方便查找。本专栏源码是由OpenLayers7.x版本结合Vue框架编写。本专栏从Vue搭建脚手架到如何引入OpenLayers7依赖的每一步详细新手教程,再到通过各种入门案例和综合性的实战案例,带领大家快速上手Vue+OpenLayers7开发。

GIS技术方向,GIS地图技术分享(GIS入门、Openlayers教程、Leaflet教程),做最好的GIS地图开发教程。关注博主公众号:eguid 3971

基于Stateflow的驱动电机控制系统模式管理与安全策略研究

摘要 本文基于Stateflow状态机建模工具,研究了驱动电机控制系统的模式管理架构与安全策略实现方法。通过分析电机控制系统的工作模式,设计了包含初始化、待机、校准、对齐、运行、故障、复位七种状态的有限状态机模型,并建立了三级故障处理机制和降额保护策略。基于Simulink/Stateflow搭建的仿真模型实现了模式切换逻辑和安全管理功能,验证了系统能够正确响应各类控制事件,故障处理机制可有效保护系统安全。研究成果为电动汽车电机控制系统的工程开发提供了参考。 关键词:Stateflow;驱动电机控制;模式管

AI的内部世界的博客 58

[POJ1833] 排列(STL之next_permutation)

<br /> POJ1833 排列Time Limit: 1000MS Memory Limit: 30000KTotal Submissions: 9723 Accepted: 4297<br />Description题目描述: <br />大家知道,给出正整数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六个排列。 <br /><br />任务描述: <br />给出某个排列,

Dango's happy life 650

【swjtu】算法实验2.4分析算法时间复杂度

分析给定算法的时间复杂度。 上机实验,绘制不同输入情况下的运行时间曲线,并与(1)中的分析结果进行比较。 撰写相应的实验报告,实验报告内容包括:实验目的、实验任务、 实验环境、实验步骤、实验结果及其分析以及实验总结等部分内容。

qq_52046937的博客 731

排列。

题目要求: 用1,2,3,...,9组成3个三位数abc,def,ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解。 思路: 1:用一个循环,三位数中最小的一个是i=123,从i依次递增至333。(因为333*3=999); 2:定义一个数组S[10],将其全部赋初值0; 3:将i 的百位十位和个位分离,使S[百位]=1,...

qq_42387291的博客 438

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

字典排序

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=...

weixin_30649859的博客 190

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

1.5.9排列

大家知道,给出正整数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 2 3…n。  比如:n=3,k=2给出排列2 3 1,则它的下一个排列为3 1

懂取舍 亦洒脱 774

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

poj1833 排列(C/C++)

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 =

sinat_39591298的博客 783

C - 排列(1.5.9)

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

Shawn Hou 1093

求数列的全排列(递归解法)

问题很简单,求数列的全排列,比如一个数列1,2,3.它的全排列就是: 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 现在要用计算机来求,我只想到递归和回溯也只写了递归。然后去网上搜索发现很多很好的算法,比如移位置换什么的,复杂度很低也很好理解。 那我写出来的最容易想到的递归写法,然后加了一个遍历去重,就是比如1,1,2这种数列不会出现两次1,1,2这种,因

huntererer的博客 1698

求任意数列的全排列

利用递归求解 #include void PrintPerm(int *a,int *b,int n,int m,int cur); int main() {  int n,m,i,a[100],b[20];  printf("please input n\n");  scanf("%d",&n);  for(i=0;i  scanf("%d",&b[i]);  PrintPe

Accepted ALL lve 784

【基础算法】求全排列的方法

深度优先法 #include int sum = 0; int n; int in_hand[10]; int tmp[10]; void dfs(int in_) { if(in_ == n+1) { ++sum; for(int i = 0; i != n+1;++i) printf("%d ",tmp[i]);

喜欢吃一口烤肉的啵啵 976

LeetCode060——第k个排列

我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/permutation-sequence/description/ 题目描述: 知识点:递归、回溯 思路一:求出所有的排列,取第k个排列(在LeetCode中提交会超时) 该思路之所以超时,是因为求解了许多...

清风阁 440

全排列,全部子集,数组中找第k小的值

1.全排列: template<class Type> void Swap(Type &a,Type &b) { Type c = a; a = b; b = c; } void Perm2(int arr[], int start, int end) { if(NULL == arr) { return; } if(start == end)//...

IT_Quanwudi的博客 610

Leetcode算法Java全解答--60. 第k个排列

Leetcode算法Java全解答–60. 第k个排列 文章目录Leetcode算法Java全解答--60. 第k个排列题目想法结果总结代码我的答案大佬们的答案测试用例其他 题目 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: “123” “132” “213” “231” “312” “321” 给定...

cmqwan的博客 9032

数列全排列

将一组数打乱顺序,所有不同顺序的排列的集合称为全排列 使用递归方法打印出全排列如下 private static int tmp; public static void change(int[] arr,int one,int two){     tmp = arr[one];     arr[one]=arr[two];     arr[two]=tmp; } //上方法交换数组中元素位置 ...

sitamila的博客 992
上一篇: [poj2777 Count Color]线段树
下一篇: [poj2117 Electricity]求割点
bit_line
博客等级 码龄12年 33粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值