ventulus95   5년 전

bottom-up으로는 문제를 풀었는데요. top-down형식으로는 못 풀겠더라구요.  여기서 말하는 top-down방식이 다른분들이 생각하는 것과 좀 다를수도 있는데요.

저는 대부분의  top-down방식의 dp을 생각할때 n을선택하고 n을 작은수로 쪼개가면서 문제를 푸는 방식으로 생각했는데요. 혹시 이방식은 틀린건가요? 

dp굇수님들의 조언 부탁드립니다. 

indioindio   5년 전

aux(n, k) : k 번째 수를 포함하는 합이 최대값이 되는 경로의 합

aux(n,k ) = max(aux(n-1, k-1), aux(n-1, k)) + value[n, k]

f(n) : max(aux(n, 0)...aux(n-1))


구현해보니 정답이 되네요.

ventulus95   5년 전

n이랑 k가 1인 경우는 aux(0,0) aux(0,1)중에서 고르게되는 데 aux(0,1)은 안나오지 않나요...?? 

aux(0,1)은 -1이라서 상관없나요? 

indioindio   5년 전

범위 밖을 참조할때는 0을 반환하게끔 해주었습니다.

재귀함수의 base case가 0인 셈이겠네요.

1

1

과 같이 말씀하신 경우라면 max(0, 0) + 1 이 되겠습니다.

ventulus95   5년 전

감사합니다! 설명 잘들었습니다.

댓글을 작성하려면 로그인해야 합니다.