招商银行信用卡中心实习笔试编程第二题

全AC,思路:先按照棍子的长度排序,然后遍历棍子的重量,筛选出最大递增的序列,这一部分的时间成本为1,剩下的不符合递增顺序的棍子利用同样方法处理,递归直到没有棍子。
T = int(input()) 
for t in range(T):
    n = int(input())
    length = [int(x) for x in input().split()]
    weight = [int(x) for x in input().split()]
    arr = list(zip(length, weight))
    arr.sort()

    def Find(arr):
        print(arr)
        if arr == []:
            return 0
        temp = []
        last = arr[0]
        for i in range(1, len(arr)):
            if arr[i][1] >= last[1]: # 注意这里要比较的是最近的符合递增条件的棍子,长度已经是递增顺序,只需比较重量即可
                last=arr[i]
            else:
                temp.append(arr[i])
        return 1 + Find(temp)
    print(Find(arr))


#笔试题目#
全部评论
niubility
3 回复 分享
发布于 2020-03-29 23:50
牛批!
点赞 回复 分享
发布于 2020-03-27 21:30

相关推荐

评论
1
9
分享

创作者周榜

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