Problem : [Usaco2010 Feb]feedtime 吃饭时间

Problem : [Usaco2010 Feb]feedtime 吃饭时间

Description
Bessie的吃饭时间到了,Farmer John正在决定把她放到哪里。 FJ的农场由W x H (1 <= W <= 750; 1 <= H <= 75
0)个小格子组成。农场被岩石,分割成若干大大小小的牧场。每个牧场包含一些草地和岩石。 Bessie是一头饥饿
的小奶牛,只喜欢吃,吃,吃。她可以从一个格子走到水平、垂直或对角相邻的任何一个格子。 Bessie不能经过
有岩石的格子,因为那会弄伤她的脚,当然,她也不能离开农场。 Bessie想知道,她最多可以吃到多少格子的牧
草。 FJ有一张农场的地图,’.’表示一格牧草,’*’表示一块岩石。请看一张10*8的地图和三个牧场分开表示
的明细图。

牧场1有21个格子;牧场2有18个格子;牧场3有2个格子。因此Bessie为了吃到最多格子的草,应该选择牧场1。
Input
* 行 1: 两个空格隔开的整数: W 和 H * 行 2..H+1: 第i+1行包含W个字符,每个字符为’.’ 或 ‘*’,描述地图的
第i行。
Output
* 行 1: 一个整数,表示Bessie最多可以吃到的多少格子的牧草。
Sample Input
10 8
….*
..….
….*
.*.
..**
.*.
.
*..
Sample Output
21

#include<iostream>
using namespace std;
int h,w,sum;
bool x[1000][1000];
void bFS(int i,int j)
{
    if(i==0||i>h||j==0||j>w||x[i][j]==false)return;
    sum++;
    x[i][j]=false;
    bFS(i+1,j+1);
    bFS(i+1,j);
    bFS(i+1,j-1);
    bFS(i,j+1);
    bFS(i,j);
    bFS(i,j-1);
    bFS(i-1,j+1);
    bFS(i-1,j);
    bFS(i-1,j-1);
}
int main()
{
    int max=0;
    char ch;
    scanf("%d%d",&w,&h);
    for(int i=1;i<=h;i++)
    for(int j=1;j<=w;j++)
    {
        cin>>ch;
        if(ch=='.')x[i][j]=true;
        else x[i][j]=false;
    }
    for(int i=1;i<=h;i++)
    for(int j=1;j<=w;j++)
    {
        sum=0; 
        bFS(i,j);
        if(sum>max)max=sum;
    }
    printf("%d",max);
    return 0; 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值