0815:携程笔试
发布日期:2021-05-08 01:41:29 浏览次数:17 分类:原创文章

本文共 660 字,大约阅读时间需要 2 分钟。

有a、b两种长度的瓷砖,从中任选k块,输出所有可能铺出的道路长度

# 有a、b两种长度的瓷砖,从中任选k块,输出所有可能铺出的道路长度def divingBoard(a,b,k):    if k==0:        return []    else:        ans=set()        for i in range(0,k+1):            sum=i*a+(k-i)*b            ans.add(sum)    return list(sorted(ans))print(divingBoard(1,2,3))

方法二:深度优先搜索

ans=set()K=3# 这里必须要这样定义一个数组并且初始化,用来代表对应位置要放置的元素,其实只用到了[0,k]的范围ans1=[0 for i in range(10)]# 不能定义一个空的列表,之后使用append加入新元素# ans1=[]def dfs(a,b,k):    nums=[a,b]    if k==K:        ans.add(sum(ans1[:k]))        return    for num in nums:        # ans1.append(num) # 如果用ans1=[]进行初始化,这里就只能使用append添加元素,是不能得到正确结果的        ans1[k]=num        dfs(a,b,k+1)dfs(1,2,0)print(list(ans))

在这里插入图片描述

上一篇:python负数存储
下一篇:动态规划:蜗牛爬井问题

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月01日 08时16分32秒