最新华为OD机试
题目描述
给定参数n,从1到n会有n个整数:1,2,3,…,n,这n个数字共有n!种排列。
按大小顺序升序列出所有排列的情况,并一一标记,
当n=3时,所有排列如下:
“123” “132” “213” “231” “312” “321”
给定n和k,返回第k个排列。
输入描述
- 输入两行,第一行为n,第二行为k,
- 给定n的范围是[1,9],给定k的范围是[1,n!]。
输出描述
输出排在第k位置的数字。
示例1
输入
3
3
输出
213
说明
3的排列有123,132,213…,那么第三位置就是213
示例2
输入
2
2
输出
21
说明
2的排列有12,21,那么第二位置的为21。
解题思路
常见的递归解法
Java
import java.util.*;
public class Main {
public static void main(String[] args) {
int n, k;
Vector<String> lines = new Vector

本文介绍了华为OD统一考试B卷的最新题库情况,重点讲解了如何找到第k个排列的问题。文章提供了C++、Java、JavaScript和Python四种语言的解题代码,并附带了多个测试用例。提醒考生注意华为机考的ACM输入输出模式和代码查重规则。
订阅专栏 解锁全文
&spm=1001.2101.3001.5002&articleId=130021165&d=1&t=3&u=3ffdafe9488148c7a11c36e083f6c4e2)
4286

被折叠的 条评论
为什么被折叠?



