728x90
반응형
#include <bits/stdc++.h>
using namespace std;
int testCase, n, m;
int arr[20][20];
int dp[20][20];
int main(void) {
//테스트케이스 입력
cin >> testCase;
for(int tc = 0; tc<testCase; tc++){
// 금광 정보 입력
cin >> n >> m;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> arr[i][j];
}
}
// 다이나믹 프로그래밍을 위한 2차원 DP 테이블 초기화
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
dp[i][j] = arr[i][j];
}
}
// 다이나믹 프로그래밍 진행
for(int j=1; j<m; j++){
for(int i=0; i<n; i++){
int leftUp, leftDown, left;
// 왼쪽 위에서 오는 경우
if(i==0) leftUp = 0;
else leftUp = dp[i-1][j-1];
// 왼쪽 아래에서 오는 경우
if(i == n-1) leftDown = 0;
else leftDown = dp[i+1][j-1];
// 왼쪽에서 오는 경우
left = dp[i][j-1];
dp[i][j] = dp[i][j] + max(leftUp, max(leftDown, left));
}
}
int result = 0;
for(int i=0; i<n; i++){
result = max(result, dp[i][m-1]);
}
cout << result << endl;
}
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[백준/DP/C++] 11726번 2xn 타일링 (0) | 2022.12.19 |
---|---|
[이코테/DP/C++] 병사 배치하기 (최장 증가 부분 수열 알고리즘, LIS) (1) | 2022.12.14 |
[이코테/DP/C++] 효율적인 화폐구성 (0) | 2022.12.13 |
[이코테/DP/C++] 1로 만들기 (0) | 2022.12.01 |
[이코테/DP/C++] 개미 전사 (0) | 2022.12.01 |