페이지

1937번: 욕심쟁이 판다

https://www.acmicpc.net/problem/1937


#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;
}

댓글 없음 :

댓글 쓰기