문제 풀 당시 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 |