문제 링크: https://www.acmicpc.net/problem/14430
dp 문제입니다. dp[i][j] = i행 j열까지 이동할 때 캘 수 있는 자원의 최대 개수로 생각하고 풀면 됩니다
#include <bits/stdc++.h>
using namespace std;
int dp[300][300];
bool mineral[300][300];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
int n, m;
cin >> n >> m;
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
cin >> mineral[i][j];
dp[0][0] = mineral[0][0];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
if (i != 0)
dp[i][j] = max(dp[i][j], dp[i - 1][j] + mineral[i][j]);
if (j!=0)
dp[i][j] = max(dp[i][j], dp[i][j - 1] + mineral[i][j]);
}
}
cout << dp[n - 1][m - 1] << '\n';
return 0;
}
반응형
'Online Judge > 백준' 카테고리의 다른 글
[백준][C++] 3460: 이진수 (0) | 2020.07.22 |
---|---|
[백준][C++] 4659: 비밀번호 발음하기 (0) | 2020.07.22 |
[백준][C++] 14499: 주사위 굴리기 (0) | 2020.07.22 |
[백준][C++] 14503: 로봇 청소기 (0) | 2020.07.21 |
[백준][C++] 17946: 피자는 나눌 수록 커지잖아요 (0) | 2020.07.20 |