본문 바로가기
알고리즘/DP

11048 이동하기

by tryotto 2019. 7. 6.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <algorithm>
 
using namespace std;
 
int arr[1005][1005= {0};
int dp[1005][1005= { 0 };
 
int main() {
    int n, m;
    scanf("%d %d"&n, &m);
 
    for (int i = 1; i <= n; i++
        for (int j = 1; j <= m; j++
            scanf("%d"&arr[i][j]);
            
    dp[n][m] = arr[n][m];
    for (int i = n - 1; i >= 1; i--)
        dp[i][m] = arr[i][m] + dp[i + 1][m];
    for (int i = m - 1; i >= 1; i--)
        dp[n][i] = arr[n][i] + dp[n][i + 1];
 
    for (int i = n; i >= 1; i--
        for (int j = m; j >= 1; j--
            dp[i - 1][j - 1= arr[i - 1][j - 1+ max(dp[i - 1][j], dp[i][j - 1]);
        
    printf("%d", dp[1][1]);
}
cs


'알고리즘 > DP' 카테고리의 다른 글

11722 가장 긴 감소하는 부분  (0) 2019.07.07
2293 동전1  (0) 2019.07.06
6359 만취한 상범  (0) 2019.07.06
9507 Generations of Tribbles  (0) 2019.07.06
2698 인접한 비트의 갯수  (0) 2019.07.06