题目分析:本题就是在给出的数中任意选出i(1<=i<=4)个数,然后将选出的数全排列,把所有可能的组合的全排列都列举出来排序即可得出第n个数是几。
输入和初始化: 用户输入一串数字,通过逗号分隔,并转换成整数列表 digits。 初始化一个集合 st 来存储不同的数字。 建立一个映射 mp,将数字 2 映射到 5,5 映射到 2,6 映射到 9,9 映射到 6。 res 数组用于存储最终的数字组合。 vis 数组用于标记 digits 中的数字是否已经被用于当前组合。
定义深度优先搜索(DFS)函数 dfs:
小明负责公司年会,想出一个趣味游戏:
屏幕给出 1−9 中任意 4 个不重复的数字,大家以最快时间给出这几个数字可拼成的数字从小到大排列位于第 n 位置的数字,其中 n 为给出数字中最大的(如果不到这么多数字则给出最后一个即可).
注意:
给出的数字:1, 4, 8, 7 则可以拼接的数字为:
1, 4, 7, 8, 14, 17, 18, 41, 47, 48, 71, 74, 78, 81, 84, 87, 147, 148, 178...(省略后面的数字)
因此,第 n(即8)个数字为 41。
输入以逗号分隔的 4 个 int 类型整数的字符串。
输出为这几个数字可拼成的数字从小大大排列位于第 n (n为输入数字中最大的数字) 位置的数字,如果输入的数字不在范围内或者有重复,则输出 −1。
样例一:
输入
1,4,8,7
输出
41
说明
可以构成的数字按从小到大排序为:1, 4, 7, 8, 14, 17, 18, 41, 47, 48, 71, 74, 78, 81, 84, 87, 147, 148, 178...(省略后面的数字)故第 8 个数字为 41。
样例二:
输入
2,5,1,4
输出
-1
说明
2 和 5 不能同时出现。
样例三:
输入
3,0,9,1
输出
-1
说明
0 不在 1 到 9 的范围内。
样例四:
输入
3,9,7,8
输出
39
说明
注意 9 可以当 6 使用,所以可以构成的数字按从小到大排序为:3, 6, 7, 8, 9, 36, 37, 38, 39, 63, 67, 68, 73, 76, 78, 79, 83 .... (省略后面的数字),故第9个为39
本题属于以下题库,请选择所需题库进行购买