招商银行信用卡中心实习笔试编程第二题
全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))
#笔试题目#