POJ 1964 City Game

本文详细介绍了使用C++语言解决计算特定图形面积的问题,包括输入处理、逻辑判断与输出结果的实现步骤。通过实例演示了如何高效地利用C++的特性进行算法设计。
#include<iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>

using namespace std;
#define P(x) (scanf("%d",&x))
#define PP(a,b) (scanf("%d%d",&a,&b))
#define PR(a) (printf("%d\n",a))
#define M 1010

int n,m;
int r[M],l[M],h[M];

int maxx(int a,int b)
{
    return a>b?a:b;
}
void init()
{
    int test;
    P(test);

    while(test--)
    {
        PP(n,m);
        memset(r,0,sizeof(r));
        memset(l,0,sizeof(m));
        memset(h,0,sizeof(h));

        int max = 0;

        for(int i=0;i<n;i++)
        {
            char ch;
            for(int j=0;j<m;j++)
            {
                cin>>ch;
                if(ch=='F') h[j]++;
                else h[j]=0;
            }
            getchar();

            for(int ii=0;ii<m;ii++)
            {
                if(h[ii]>0)
                {
                    int jj;
                    for( jj=ii-1;jj>=0;jj--)
                        if(h[jj]<h[ii])
                        break;
                    l[ii]=jj;

                    for(jj=ii+1;jj<m;jj++)
                        if(h[jj]<h[ii])
                        {
                            break;
                        }
                    r[ii]=jj;
                }
                max = maxx(max,(r[ii]-l[ii]-1)*h[ii]);
            }
        }
        max = max*3;
        PR(max);
        
    }
}
int main()
{
    init();
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值