#include <string>
#include <vector>
using namespace std;
int DFS(int map[101][101],int i,int j,int Y,int X,int n){
if(i==Y&&j==X)
return 1;
if(map[i][j]==-1){
if(map[i+1][j]>0)
return DFS(map,i+1,j,Y,X,map[i+1][j])+1;
if(map[i-1][j]>0)
return DFS(map,i-1,j,Y,X,map[i-1][j])+1;
if(map[i][j+1]>0)
return DFS(map,i,j+1,Y,X,map[i][j+1])+1;
if(map[i][j-1]>0)
return DFS(map,i,j-1,Y,X,map[i][j-1])+1;
}
if(map[i][j]!=n)
return 0;
int max=0;
int a = DFS(map,i+1,j,Y,X,n);
if(a>max)
max=a;
int b = DFS(map,i-1,j,Y,X,n);
if(b>max)
max=b;
int c = DFS(map,i,j+1,Y,X,n);
if(c>max)
max=c;
int d = DFS(map,i,j-1,Y,X,n);
if(d>max)
max=d;
}
int solution(vector<vector<int>> rectangle, int characterX, int characterY, int itemX, int itemY) {
int map[101][101]={};
for(int n=0;n<rectangle.size();n++){
for(int i=rectangle[n][4];i<=rectangle[n][2];i++){
for(int j=rectangle[n][1];j<=rectangle[n][3];j++){
if(map[i][j]!=0)
map[i][j]=-1;
else if(i==rectangle[n][4] || i==rectangle[n][2]){
if(j==rectangle[n][1] || j==rectangle[n][3])
map[i][j]=n;
}
}
}
}
return DFS(map,characterY,characterX,itemY,itemX,map[characterY][characterX]);
}
top of page
실제 작동 상태를 확인하려면 라이브 사이트로 이동하세요.
아이템 줍기(미완)
아이템 줍기(미완)
댓글 0개
좋아요
댓글(0)
bottom of page