#include <iostream> using namespace std; | |
int map[102][102]; | |
bool visit[102][102]; | |
int N; | |
int dx[4]={1, -1, 0, 0}; | |
int dy[4]={0, 0, 1, -1}; | |
void dfs(int y, int x, int r_height) | |
{ | |
visit[y][x] = 1; | |
for(int i=0; i<4; i++) | |
{ | |
int nx=x+dx[i]; | |
int ny=y+dy[i]; | |
if((map[ny][nx]-r_height)>0 && !visit[ny][nx]) | |
{ | |
dfs(ny, nx, r_height); | |
} | |
} | |
} | |
int main() | |
{ | |
int m_height=0; | |
int m_area=1; | |
cin >> N; | |
/*input*/ | |
for(int i=1; i<=N; i++) for(int j=1; j<=N; j++) | |
{ | |
cin >> map[i][j]; | |
if(m_height<map[i][j]) m_height=map[i][j]; | |
} | |
for(int i=2; i<=m_height; i++) | |
{ | |
int tmp_area=0; | |
/*initialize*/ | |
for(int j=1; j<=N; j++) for(int k=1; k<=N; k++) visit[j][k]=0; | |
for(int j=1; j<=N; j++) | |
for(int k=1; k<=N; k++) | |
{ | |
if((map[j][k]-i)>0 && !visit[j][k] ) | |
{ | |
dfs(j, k, i); | |
tmp_area++; | |
} | |
} | |
if(m_area<tmp_area) m_area=tmp_area; | |
}// for(int i=2; i<=m_height; i++) | |
cout << m_area; | |
}//int main() |
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
171120_1389_케빈 베이컨의 6단계 법칙 (0) | 2017.11.20 |
---|---|
171119_11724_연결 요소의 개수 (0) | 2017.11.19 |
171117_2583_영역 구하기 (0) | 2017.11.17 |
171116_1987_알파벳 (0) | 2017.11.16 |
171115_2667_단지번호붙이기 (0) | 2017.11.15 |