#include<stdio.h> #include<algorithm> #include<memory.h> int N, fx[4] = { 0,1,0,-1 }, fy[4] = { 1,0,-1,0 }, count[510][510], data[510][510], MAX; int f(int x, int y) { int i, max = 0; for (i = 0; i <= 3; i++) { int tmpx = x + fx[i], tmpy = y + fy[i]; if (x >= 1 && y >= 1 && x <= N&&y <= N&&data[x][y]<data[tmpx][tmpy] && count[tmpx][tmpy] == 0) { count[tmpx][tmpy] = f(tmpx, tmpy); } if (x >= 1 && y >= 1 && x <= N&&y <= N&&data[x][y]<data[tmpx][tmpy] && count[tmpx][tmpy]>max) { max = count[tmpx][tmpy]; } } return max + 1; } int main() { int i, j; scanf("%d", &N); for (i = 1; i <= N; i++) { for (j = 1; j <= N; j++) { scanf("%d", &data[i][j]); } } for (i = 1; i <= N; i++) { for (j = 1; j <= N; j++) { if (count[i][j] == 0) { count[i][j] = f(i, j); if (count[i][j]>MAX) { MAX = count[i][j]; } } } } printf("%d", MAX); return 0; }
1937번: 욕심쟁이 판다
https://www.acmicpc.net/problem/1937
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기