Introduction to Algorithms(CLRS)에서 Cormen et al. 다음과 같이 (페이지 369)를로드 절단 문제를 해결에 대해 이야기 여기상향식로드 컷 구현에 대한 이해
EXTENDED-BOTTOM-UP-CUT-ROD(p, n)
let r[0...n] and s[0....n] be new arrays
r[0] = 0
for j = 1 to n:
q = -infinity
for i = 1 to j:
if q < p[i] + r[j - i]: // (6)
q = p[i] + r[j - i]
s[j] = i
r[j] = q
return r and s
p[i]
이 길이 난을로드를 절단의 가격은, r[i]
길이 i와 s[i]
에서로드를 절단의 수익이, 우리를 제공합니다 첫 번째 조각이 잘리는 최적의 크기.
내 질문 n
에 1
에서 j
을 반복 할 외부 루프뿐만 아니라 1
에서 n
에 간다 내부 루프 i
에 관한 것입니다.
온라인으로 (지금까지 얻은 최대 수익)을 r[j - i]
(이전 커트 동안 얻은 최대 수익)과 비교합니다.
j = 1 and i = 1
일 때, 내부 루프의 다음 반복은 괜찮은 것 같습니다. 여기서 j = 1 and i = 2
은 r[j - i] be r[1 - 2] = r[-1]
이 아니겠습니까?
음수 인덱스가 여기에 적합한 지 확실하지 않습니다. CLRS의 오타입니까? 아니면 여기에 뭔가 빠졌습니까?
혹시 막대 절단 문제가 무엇인지 모르시겠습니까? 여기에 example입니다. for i = 1 to j
i
는 1에서 시작하고 값 까지하지만j
의 값을 초과하지 않는 증가합니다
코드 연구소 - 예. 어리석은 감시. 그 점을 지적 해 주셔서 감사합니다. –
문제 없습니다, 우리 모두 가끔 때때로 간과합니다 :) – Unsigned