0815:携程笔试
Posted 3Sunremitting
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0815:携程笔试相关的知识,希望对你有一定的参考价值。
有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))
以上是关于0815:携程笔试的主要内容,如果未能解决你的问题,请参考以下文章