광석 수집 (Top-down)


답안 제출

Points: 8
시간 제한: 2.0s
메모리 제한: 1G

문제 유형
허용된 언어
C++

광석을 수집하는 SCV가 격자 모양의 광역 지대에서 작업하고 있다.

SCV는 항상 격자의 맨 왼쪽 위인 \((1,1)\)에서 출발하여 맨 오른쪽 아래인 \((N,M)\)에서 작업을 마친다. 한 번 이동할 때 오른쪽 또는 아래쪽으로 한 칸만 이동할 수 있다.

SCV가 지나가는 칸에 광석이 있다면 그 광석을 수집한다. 시작 칸과 도착 칸에 있는 광석도 수집할 수 있다.

격자의 크기와 광석의 배치가 주어졌을 때, SCV가 수집할 수 있는 광석의 최대 개수를 Top-down 방식으로 구하시오.

미리 작성된 코드

아래 코드에서 주석으로 표시된 부분에 코드를 작성한다.

#include <stdio.h>

int n, m;
int arr[201][201];
int dt[201][201];

/* 코드를 작성하세요. */

int main() {
    int i, j;

    scanf("%d %d", &n, &m);
    for (i = 1; i <= n; i++) {
        for (j = 1; j <= m; j++) {
            scanf("%d", &arr[i][j]);
            dt[i][j] = -1;
        }
    }

    printf("%d", f(n, m));
    return 0;
}

제출할 때는 완성한 f 함수의 정의 전체만 제출한다. 헤더, 전역 변수와 main 함수는 제출하지 않는다.

입력

첫째 줄에 광역 지대의 세로 크기 \(N\)과 가로 크기 \(M\)이 공백으로 구분되어 주어진다.

둘째 줄부터 \(N\)개의 줄에 걸쳐 각 줄마다 \(M\)개의 정수가 공백으로 구분되어 주어진다.

각 정수는 0 또는 1이다. 1은 해당 칸에 광석이 있음을, 0은 빈 칸임을 의미한다.

출력

첫째 줄에 SCV가 수집할 수 있는 광석의 최대 개수를 출력한다.

제한 사항

  • \(1 \le N \le 200\)
  • \(1 \le M \le 200\)

예제 입력 1

5 4
0 1 0 0
0 0 1 0
1 1 0 0
1 0 1 0
1 1 0 0

예제 출력 1

4

코멘트

현재 작성된 코멘트가 없습니다.