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

全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

相关推荐

07-23 14:04
东北大学 C++
既然这样,为什么不点击就送呢
牛马88号:因为你合适。但有很多笔试就挂了、通过了再排序的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-22 11:33
点赞 评论 收藏
分享
评论
1
9
分享

创作者周榜

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