【贝壳笔试】算法岗-丢失的卡片-第二题,写出一个答案,求指点

from itertools import permutations

if __name__ == "__main__":
    num = [int(x) for x in input().strip().split(' ')]
    n = 1
    flag = True
    while True:
        i = n
        while i > 0:
            yu = i % 10
            num[yu] -= 1
            i //= 10
        if max(num) == 0:
            break
        elif max(num) < 0:
            flag = False
            break
        else:
            n += 1
            continue
    if flag == False:
        print('No Answer')
    else:
        res = []
        for i in range(10):
            if num[i] < 0:
                res += [str(i)]*abs(num[i])
        ans = []
        for item in permutations(res):
            ans.append(''.join(item))
        ans = set(ans)
        ans = list(ans)
        ans.sort()
        for item in ans:
            print(n, int(item))
思路概是:从 1 开始 循环,每次遍历一个数字,就计算这个数字的位数 个数,然后将 输入的数组对应的位置减 1,直到输入数组 出现 最大值为0 的情况,表示有解,跳出循环;若 输入数组 最大值大于0,继续循环;输入数组最大值小于0,表示没有答案,跳出循环;对于有解跳出的情况,判断 输入数组为负值的元素,以及个数,进行全排列#贝壳找房##笔试题目##秋招#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-04 18:02
好不容易拿到了字节Offer,鼠鼠做后端的,但家里人觉得可能被裁员不稳定,让鼠鼠去投国企,现在好纠结到底该咋选
文档传偷助手:该投就投吧,不过建议别放弃offer 拿到手里的才是最好的
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
昨天 19:25
门头沟学院 Java
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务