zoukankan      html  css  js  c++  java
  • bjfu1143 小蝌蚪安家 解题报告

    搜索没判断重复 导致各种bug 广搜栈空间超了 深搜有调试了半天 真的无语了 记录一下 校内放了链接校外也访问不了 直接放题目

    用visit数组记录是否出现在队列里面 数据结构学好 并且做的题目少的可怜

    题目出的还不错 经典搜索题目

    小蝌蚪安家

    时间限制(普通/Java):1000MS/10000MS          运行内存限制:65536KByte 总提交:30            测试通过:10

    描述

    在一个矩形区域内,有些地方有水,有些地方没水。所有相邻的有水的地方会共同组成一个水洼,小蝌蚪想在这块区域中找到一个最大的水洼来安家。

    输入

    有多组输入数据,每组第一行包含两个正整数n,m(n,m<=100),接下来n行,每行m个字符,“.”表示有水,“#”表示没水。

    输出

    对于每组输入数据输出一行,包含一个整数,表示最大的水洼的面积。

    样例输入

    3 3 ### ### ##. 2 3 #.. ..# 3 3 ##. #.. .##

    样例输出

    1 4 3

    题目来源

    jhfjhfjhf1(金海峰出题 比赛的时候居然没看到)

    代码

     

    /*
      Name:
      Copyright:
      Author:yujiaao
      Date:
      Description:hdu
    */
    #include<iostream>
    #include<cstdio>
    #include <algorithm>
    using namespace std;
    struct node
    {
        int x;
        int y;
    };
    int n,m;
    node queue[200];
    char map[200][200];
    bool is_visit[200][200]={0};
    int f[4][2]={-1,0, 0,1, 1,0, 0,-1};
    int bfs(int x0,int y0)
    {
        int ans=0;
        int i=0;
        int base=0;
        int top=1;
        int x,y;
        queue[base].x=x0;
        queue[base].y=y0;
        is_visit[queue[base].x][queue[base].y]=1;
        while(base!=top)
        {
            ans++;
            for(i=0;i<4;i++)
            {
                x=queue[base].x+f[i][0];
                y=queue[base].y+f[i][1];
                if(x>=0 && x<n && y>=0 && y<m && map[x][y]=='.' && is_visit[x][y]==0 )
                {
                    is_visit[x][y]=1;
                    queue[top].x=x;
                    queue[top].y=y;
                    top++;
                }
            }
            map[queue[base].x][queue[base].y]='#';
            base++;
        }
        return ans;
    }
    int main()
    {
    //    freopen("C:\\Users\\yujiaao\\Desktop\\测试专用\\in.txt","r",stdin);
    //    freopen("C:\\Users\\yujiaao\\Desktop\\测试专用\\out.txt","w",stdout);
        int max,i,j,temp;
        while(scanf("%d %d",&n,&m)!=EOF)
        {
            memset(queue,0,sizeof(queue));
            memset(is_visit,0,sizeof(is_visit));
            getchar();
            max=0;
            for(i=0;i<200;i++)
            {
                for(j=0;j<200;j++)
                {
                    map[i][j]=0;
                }
            }
            for(i=0;i<n;i++)
            {
                for(j=0;j<m;j++)
                {
                    scanf("%c",&map[i][j]);
                }
                getchar();
            }
            for(i=0;i<n;i++)
            {
                for(j=0;j<m;j++)
                {
                    if(map[i][j]=='.')
                    {
                        temp=bfs(i,j);
                        if(temp>max)
                        max=temp;
                    }
                }
            }
            printf("%d\n",max);
        }
        //system("pause");
        return 0;
    }

     

     

  • 相关阅读:
    JBPM使用
    eclipse spring3.X redis 整合-配置
    30分钟学会如何使用Shiro
    Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
    Eclipse上Maven环境配置使用 (全)
    redis未设置idle超时时间导致连接过多
    linux下搭建redis并解决无法连接redis的问题
    redis配置用户认证密码
    spring配置redis
    Linux nohup和&后台运行,进程查看及终止,进程信息输出,控制台信息输出
  • 原文地址:https://www.cnblogs.com/yujiaao/p/2787191.html
Copyright © 2011-2022 走看看