문제 틀린 이유
무수히 많지만 특정한 몇가지 적겠습니다
dp점화식은 -> dp[l][r]이다 => l ~ r에서 파일을 합치는 최소비용.
1) 여기서 dp[l][r] 여기있는 l, r이 단순히 0 ~ n-1이라고 알았다 틀렸다 특정 l ~ r이다
2) 그럼 점화식은 -> dp[l]][r] = dp[l][l] + dp[l+1][r] + l ~ r의 파일 비용합 여기서도 l ~ r의 파일 비용을 구할때는 범위가
!!!! l ~ r이다 그러면 함수내에서 l ~ r로 값을 구해 주면된다
int sum = 0;
for (int i = l; i <= r; ++i) {
sum += val[i];
}
3) 또 헤맨곳은 기저조건 부분이다. 여기서 생각해보면 l == r같을때는 한자리이다 제자리이다 합칠 수가 없다 -> 비용이 0이다
말고는 기저조건을 min( , 기저조건) 이기에 조기화를 INF로 해주면된다
4) 점화식을 코드로 옮기는 과정!
dp[l][r] = min(solve[l][l +i] + solve[l + i][r] + sum, dp[l][r])
여기서 l + i는 마지막으로 r-1까지 간다
그러므로 if조건문을 제대로 설정해주어야한다
if(l + i <= r -1)로..
for (int i = 0; i < n; i++) {
if (l + i <= r -1)
{
//마지막은 solve(l, r-1) + solve(r, r)
dp[l][r] = min(solve(l, l + i) + solve(l + i + 1, r) + sum, dp[l][r]);
}
}
'알고리즘' 카테고리의 다른 글
백준 가장 긴 증가하는 부분 수열 4 14002 (0) | 2021.08.10 |
---|---|
백준 9251 lcs (0) | 2021.08.09 |
백준 가장 긴 증가하는 부분 수열 11053 (0) | 2021.08.03 |
백준 12865 평범한 배낭 (0) | 2021.08.03 |
가장 긴 증가하는 부분 수열4 (0) | 2021.07.28 |