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:携程笔试的主要内容,如果未能解决你的问题,请参考以下文章

携程开发笔试记录

2016携程测试实习生笔试编程题

携程笔试2-动态规划(未解决)

携程2016研发工程师笔试

携程笔试5.27-1图,2dp

Java程序员从京东阿里携程面试回来,已成功拿到京东offer