나는 이해하고 싶은 친구가 배낭 무차별 대원 프로그램을 받았다.배낭 무력 프로그램의 의미 만들기
if (wt[n - 1] > W):
return knapSack(W, wt, val, n - 1)
을 아니다 나는 이것이 어떻게 작동하는지 이해한다 :
def knapSack(W, wt, val, n):
if n == 0 or W == 0:
return 0
if (wt[n - 1] > W):
return knapSack(W, wt, val, n - 1)
else:
return max(val[n - 1] + knapSack(W - wt[n - 1], wt, val, n - 1),
knapSack(W, wt, val, n - 1))
values = [10, 500, 786]
wt = [1, 2, 0.5]
weight = 2
n = len(values)
print(knapSack(weight , wt, values, n))
나는 이것이 어떻게 작동하는지 이해하지 않는다 :
else:
return max(val[n - 1] + knapSack(W - wt[n - 1], wt, val, n - 1),
knapSack(W, wt, val, n - 1))
을 TBH 내가이야 이건 내가 주어진 코드입니다 이 두 라인이 어떻게 작동하는지에 대한 단서가없는, 그들은 배낭을 무작위로 호출하는 것처럼 보입니다. 나는 또한 n-1이 무엇을하는지 이해하지 못한다. 내가 :)
조회 재귀 및 아마도 배낭에 대한 동적 프로그래밍에 대한 위키의 정보. – sascha
[ "나를 도와 줄 수 있습니까?" 유효한 SO 질문이 아닙니다.] (https://meta.stackoverflow.com/questions/284236/why-is-can-someone-help-me-not-an-actual-question). 이것은 보통 여러분이 필요로하는 것이 스택 오버플로가 아닌 현지 교사 또는 튜토리얼을 통해 30 분이 소요된다는 것을 나타냅니다. 이러한 일반적인 관점에서의 자습서 워크 스루는 Stack Overflow의 목적을 넘어서는 것입니다. – Prune
@Prune 안녕하세요. 필자의 원래 질문에서 언급했듯이 두 개의 특정 라인의 기능을 알고 싶었습니다. 나는 여기에 게시 할 수있을 정도로 구체적인 것으로 생각했지만 도움을 주셔서 감사합니다. 누군가가 너무 친절해서 내가 혼란스러워했던 두 줄보다 오히려 모든 것에 대한 설명을 게시했습니다. 좋은 하루 되세요. –