POJ3251-Big Square (C语言实现)

来源:互联网 发布:北海市网络预约车 编辑:程序博客网 时间:2024/06/05 06:24

#include <stdio.h>

#define SIZE 201

#define INFARM(a, b, c, d)  a > 0 && b > 0 && c > 0 && d > 0 && a <= length && b <= length && c <= length && d <= length

#define AREA(a, b)  a * a + b * b


int i, j, x, y, length, p, q, max_area;

char farm[SIZE][SIZE];


int main(void)

{

    max_area = 0;

    

    scanf("%d", &length);

    for(i =1; i <= length; ++i)

    {

        getchar();

        for(j =1; j <= length; ++j)

            farm[i][j] =getchar();

    }

    

    for(i =1; i <= length; ++i)

        for(j =1; j <= length; ++j)

            if(farm[i][j] !='B')

                for(x =length; x >=1; --x)

                    for(y =length; y >=j; --y)

                    {

                        p = i - x;

                        q = j - y;

                        if(AREA(p,q) < max_area)

                            continue;

                        if(farm[x][y] =='B' || (farm[i][j] ==farm[x][y] &&farm[i][j] =='*'))

                            continue;

                        if((INFARM(i +q, j - p, x + q,y - p) && farm[i + q][j -p] == 'J'

                            && farm[x +q][y - p] == 'J') || (INFARM(i -q, j + p, x - q,y + p)

                            && farm[i -q][j + p] == 'J' && farm[x - q][y +p] == 'J'))

                        {

                            max_area = AREA(p, q);

                        }

                    }

    

    printf("%d\n",max_area);

    

    return 0;

}

原创粉丝点击