[Algorithm]最大点数(DFS)を求める
メソッド1)サブセット

def DFS(L, time, sum):
global res
if time > m:
return
if L == n:
if sum > res:
res = sum
print(L, time, sum)
else:
DFS(L+1, time+graph[L][1], sum+graph[L][0])
DFS(L+1, time, sum)
if __name__ == '__main__':
n, m = map(int, input().split())
graph = []
for _ in range(n):
a, b = map(int, input().split())
graph.append([a, b])
res = 0 # 최대 점수
DFS(0, 0, 0)
print(res)
方法2)組合せ
def DFS(s, time, sum):
global max
if time > m:
return
if sum > max:
max = sum
for i in range(s, n):
print(s, i, time, sum)
DFS(i+1, time+graph[i][1], sum+graph[i][0])
if __name__ == '__main__':
n, m = map(int, input().split())
graph = []
for _ in range(n):
a, b = map(int, input().split())
graph.append([a, b])
max = -2147000000
DFS(0, 0, 0)
print(max)
Reference
この問題について([Algorithm]最大点数(DFS)を求める), 我々は、より多くの情報をここで見つけました https://velog.io/@rladuswl/Algorithm-최대점수-구하기-DFSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol