最小合并数
难度一星题1:最小合并数 输入一组整数,要求输出由输入整数中最多3个整数按任意顺序合并(拼接)成最小整数。数组大小n<100,每个输入数据的范围0<x<10000,输入数组包含的整数可能小于3个。输入输出示例:
输入:
1 51,2,34,58,116 输出:
1 23451 这题主要考察数理逻辑,如果把输入整数转换为字符串拼接然后转换为整数稍微麻烦一点。这里直接根据题目条件中数据范围0<x<10000,将输入整数中最小的3个全部对其到10000位,直接整数比较就行,但是这样引入了一个边角情况的处理需要留意
a=[51,2,34,58,1,116]
a.sort()
nums=a[:3]
print(nums)
res=[]
def backtack(nums,tmp):
if len(tmp)==3 and tmp not in res:
res.append(tmp[:])
if len(tmp)>3:
return
for i in range(len(nums)):
tmp.append(nums[i])
backtack(nums[:i]+nums[i+1:],tmp)
tmp.pop()
backtack(nums,[])
print(res)
cases=[]
for i in res:
cases.append(''.join(list(map(str,i))))
print(min(cases))