https://www.acmicpc.net/problem/1937
#include <iostream>#include <cmath>using namespace std;int dx[4] = {0, -1, 0, 1};int dy[4] = {-1, 0, 1, 0};int dp[501][501] = {0, };int tree[501][501] = {0, };int n;bool isInner(int i, int j) {if (i >= 0 && i < n && j >= 0 && j < n) {return true;}return false;}int process (int x, int y) {if (dp[x][y] == 1) {for (int idx = 0; idx < 4; ++idx) {int newX = x + dx[idx];int newY = y + dy[idx];if (isInner(newX, newY)) {if (tree[x][y] < tree[newX][newY]) {dp[x][y] = max(dp[x][y], process(newX, newY) + 1);}}}}return dp[x][y];}int main(){int result = -1;cin >> n;for (int i = 0; i < n; ++i) {for (int j = 0; j < n; ++j) {cin >> tree[i][j];dp[i][j] = 1;}}for (int i = 0; i < n; ++i) {for (int j = 0; j < n; ++j) {result = max(result, process(i, j));}}cout << result << endl;}
'알고리즘 풀이' 카테고리의 다른 글
백준 1019번 책 페이지 (0) | 2017.12.18 |
---|---|
백준 2193 이친수 (0) | 2017.12.15 |
(공통문제) n-queens (0) | 2017.12.09 |
백준 2292번 벌집 (0) | 2017.12.06 |
백준 2163번 초콜릿 자르기 (0) | 2017.12.04 |