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

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,表示没有答案,跳出循环;对于有解跳出的情况,判断 输入数组为负值的元素,以及个数,进行全排列#贝壳找房##笔试题目##秋招#
全部评论

相关推荐

2024-12-27 13:08
华南理工大学 Java
蝴蝶飞出了潜水钟丿:多看一眼就会💥
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客企业服务