POJ3251-Big Square (C语言实现)

本文介绍了一个用于计算特定条件下最大农场面积的算法实现。通过输入一个指定长度的农场地图,该算法能够找出符合特定条件的最大面积。它遍历地图上的每个位置,并检查周围区域来确定是否满足条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值