-
욕심쟁이 판다 - 1937Algorithm/BOJ 2020. 2. 25. 20:181234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950//1937 - 욕심쟁이 판다#include <iostream>#include <vector>using namespace std;#define IMP -100000000int N;vector<vector<int>> arr;vector<vector<int>> cache;int xarr[4] = {1, -1, 0, 0};int yarr[4] = {0, 0, 1, -1};void init(){cin >> N;arr = cache = vector<vector<int>>(N+2, vector<int>(N+2));for(int i = 1; i<=N; ++i)for(int j = 1; j<=N; ++j){cin >> arr[i][j];cache[i][j] = -1;}for(int i = 0; i<N+2; ++i)arr[0][i] = arr[i][0] = arr[N+1][i] = arr[i][N+1] = -1;}int dp(int x, int y){int& ret = cache[x][y];if(ret != -1)return ret;ret = 0;for(int i = 0; i<4; ++i)if(arr[x][y] < arr[x+xarr[i]][y+yarr[i]])ret = max(ret, dp(x+xarr[i], y+yarr[i]));return ++ret;}int main(){ios_base::sync_with_stdio(0); cin.tie(0);init();int ans = IMP;for(int i = 1; i<=N; ++i)for(int j = 1; j<=N; ++j)ans = max(ans, dp(i, j));cout << ans;}
cs https://www.acmicpc.net/problem/1937
1937번: 욕심쟁이 판다
n*n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에서 대나무를 먹는다. 그런데 단 조건이 있다. 이 판다는 매우 욕심이 많아서 대나무를 먹고 자리를 옮기면 그 옮긴 지역에 그 전 지역보다 대나무가 많이 있어야 한다. 만약에 그런 지점이 없으면 이 판다는 불만을 가지고 단식 투쟁을 하다가 죽게 된다(-_-) 이
www.acmicpc.net
욕심쟁이 판다
DP문제 입니다. 더 큰쪽으로만 향하기 때문에 싸이클이 생기지 않습니다.
'Algorithm > BOJ' 카테고리의 다른 글
계단 수 - 1562 (0) 2020.02.26 10844 - 쉬운 계단 수 (0) 2020.02.26 최대 유량 - 6086 (0) 2020.02.25 열혈강호 - 11375 (0) 2020.02.24 발전소 - 1102 (0) 2020.02.23