华为机试 导师请吃火锅
题目:
和朋友一起吃火锅,有m个菜品,你的手速是n(即吃完一道菜,要经过时间n才能再去夹菜)。任一菜品下锅后,都需要经过对应时间才能熟,过时就不可口了。怎样可以吃到最多的可口的菜。
输入:
第1行:菜品数量m,手速n
第2-m行:每行两个数字,第一个数字代表下某菜的时间,第二个数字代表该菜下锅后到煮好需要的时间。
输出:
最多可以吃多少道菜
破题思路:
假设在时间点 A最后一次夹菜,从时间轴向前看,是否有时间点B也可以下筷子,如有,则代表在时间点A能吃到的菜数量比时间点B多1
from typing import List def solution(arr:List,N): arr.sort() time1 = arr[-1] all = [0]*(time1+1) for i in range(1,time1+1): if arr.__contains__(i): all[i] = 1 for j in range((i-N),0,-1): if arr.__contains__(j): all[i] = max(all[i],all[j]+1) break print(arr) print(all) print(max(all))#result solution([3,3],1)
浙公网安备 33010602011771号