老规矩,先看数据范围,知枚举,时间复杂度(t*n**2)
注意:dfs一定要留个心,让它加个成功运行的条件
def dfs(time, idx):
if ls[idx][1] < time: return
if vis[idx] == 1: return
vis[idx] = 1
if sum(vis) == n+1:
return True
time = max(time, ls[idx][0]) + ls[idx][2]
for nex in range(1, n+1):
if dfs(time, nex):
return True
vis[idx] = 0
t = int(input())
for _ in range(t):
n = int(input())
ls = [[0,0,0]]
vis = [0]*(n+1)
for i in range(n):
t, d, l = map(int,input().split())
ls.append([t,t+d,l])
if dfs(0, 0): print('YES')
else: print('NO')
本文讨论了一个使用深度优先搜索(DFS)的函数,分析了其在给定数据结构中寻找路径的时间复杂度,强调了DFS执行时的条件判断。通过实例展示了如何在输入序列中应用DFS并检查是否存在满足条件的解决方案。
570

被折叠的 条评论
为什么被折叠?



