返回题解分享
讨论 / 题解分享/ 帖子详情

飞机降落(编程题) - 题解

python

T = int(input())
def dfs(time,step):
    if step >= n:
        return True
    for k in range(n):
        if b[k]==0:
            if a[k][0]+a[k][1]<time:#现在时间飞机已经timeout
                return False
            b[k]=1#确认不会timeout后,在加入读取
            if dfs(max(a[k][0],time)+a[k][2],step+1):
                return True
            b[k]=0
    return False
    
for _ in range(T):
    n = int(input())
    a = []
    for i in range(n):
        a.append(list(map(int,input().split())))
    b = [0]*n #b = [[0]for _ in range(n)]这种b[k]和(0)不等,类型不同
    #没必要计算最晚降落时间并保存,用dfs每种情况都考虑到
    if dfs(0,0):
        print("YES")
    else:
        print("NO")
0 回复 0 转发 0 喜欢 2 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!