본문 바로가기

Coding/백준

1937번 욕심쟁이 판다

문제 풀 당시 dfs의 개념이 안잡혀있는 상태여서 판다를 죽여버리고 싶었다

 

대나무가 많은곳으로 옴겨가면서 살 수 있는 일수를 1씩 증가시킨다

 


#include <iostream>
#include <vector>
#define MAX 501

using namespace std;

vector<int> Food[MAX];
int var[MAX][MAX];
int xx[4]={1,0,-1,0};
int yy[4]={0,1,0,-1};
int day=1;

int dfs(int x, int y, int num){
    int nx, ny;
    
    if(var[x][y]){
        return var[x][y];
    }
    
    for(int i=0;i<4;i++){
        nx=x+xx[i];
        ny=y+yy[i];
        
        if(0<=nx && nx<num && 0<=ny && ny<num && Food[x][y]<Food[nx][ny]){
            var[x][y]=max(var[x][y],dfs(nx,ny,num));
        }
    }
    
    var[x][y]++;
    return var[x][y];
}

int main(){
    int number;
    cin >> number;
    
    for(int i=0; i<number; i++){
        for(int j=0; j<number; j++){
            int food;
            cin >> food;
            Food[i].push_back(food);
        }
    }
    
    for(int i=0; i<number; i++){
        for(int j=0; j<number; j++){
            day=max(day,dfs(i,j,number));
        }
    }
    cout << day << endl;
}

'Coding > 백준' 카테고리의 다른 글

1003번 피보나치 함수  (0) 2019.09.03
14502번 연구소  (0) 2019.09.03
2747번 피보나치 수 2  (0) 2019.09.03
1932번 정수 삼각형  (0) 2019.09.03
2583번 영역구하기  (0) 2019.09.03