zoukankan      html  css  js  c++  java
  • G

    G - 小晴天老师系列——可恶的墨水瓶

    Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others)
    Submit Status

    Problem Description

    小晴天老师正在备课,这时,可恶的墨水瓶突然自己打翻了!悲剧发生了!小晴天的备课稿都被墨水弄脏了。。。。

    不过小晴天很乐观~这时他把他的一张纸分成n*m个格子,其中有一些格子被墨水涂黑了,有的没有。那么小晴天想知道,最大的一块联通的墨水块占多少个格子呢?

    所谓的联通的即两个格子至少有一个公共顶点。

    Input

    多组数据,首先是一个正整数t(t<=20)

    对于每组数据,先给出两个整数m.n(1<=n,m<=20)

    然后是一个m行n列的01矩阵,若为1,则该格子被墨水染黑。

    Output

    对于每组数据,输出一个整数,表示最大被墨水染黑的连通格子数。

    Sample Input

    1
    4 4
    1 1 0 0
    0 1 1 0
    0 0 1 0
    1 0 0 0

    Sample Output

    5
    题意:
    输入N,M,然后再输入N*M大小的地图,问你有1相临的最大个数。
    很基础的一道深度搜索的题目,坑爹的是,= -,没认真看题,是八个方向。
     1 #include <algorithm>
     2 #include <iostream>
     3 #include <stdio.h>
     4 #include <string.h>
     5 using namespace std;
     6 int Map[25][25];
     7 int Len_X,Len_Y;
     8 int SUM;/*记录1相临的最大个数*/
     9 int sum;/*记录每一次进入的1相邻的个数*/
    10 void Input()
    11 {
    12     int i,j;
    13     for(i=0;i<=Len_X+1;i++)
    14     {
    15         for(j=0;j<=Len_Y+1;j++)
    16         {
    17             if(i==0||j==0||i==Len_X+1||j==Len_Y+1)Map[i][j]=0;
    18             else scanf("%d",&Map[i][j]);
    19         }
    20     }
    21 }
    22   
    23 void BFS(int x,int y)
    24 {
    25     if(Map[x][y]==1)
    26     {
    27         Map[x][y]=0;    /*把当前可行的位置标记成'*'*/
    28         sum++;          /*每次遇到一个1,sum++ */
    29         BFS(x+1,y);     /*进入八个方向进行查找*/
    30         BFS(x-1,y);
    31         BFS(x,y+1);
    32         BFS(x,y-1);
    33         BFS(x+1,y+1);
    34         BFS(x-1,y-1);
    35         BFS(x-1,y+1);
    36         BFS(x+1,y-1);
    37     }
    38     return ;
    39 }
    40 int main()
    41 {
    42     int i,j,T;
    43     scanf("%d",&T);
    44     while(T--)
    45     {
    46         scanf("%d%d",&Len_X,&Len_Y);
    47         Input();/*输入地图,创建围墙*/
    48         SUM=0;
    49         for(i=1;i<=Len_X;i++)
    50         {
    51             for(j=1;j<=Len_Y;j++)
    52             {
    53                 if(Map[i][j]==1)/*判断当前点为1,则进入搜索*/
    54                 {
    55                     sum=0;  /*设置当前1的个数为0*/
    56                     BFS(i,j);
    57                     if(SUM<=sum)    /*获取最大值*/
    58                         SUM=sum;
    59                 }
    60             }
    61         }
    62         printf("%d
    ",SUM);
    63     }
    64     return 0;
    65 }
    View Code
    转载请备注:
    **************************************
    * 作者: Wurq
    * 博客: https://www.cnblogs.com/Wurq/
    * Gitee: https://gitee.com/wurq
    **************************************
  • 相关阅读:
    LoadRunner
    LoadRunner
    LoadRunner
    LoadRunner
    Python
    hadoop for .Net
    MVC初学
    MVC初学
    android学习---面试一
    android学习---progressbar和ratingbar
  • 原文地址:https://www.cnblogs.com/Wurq/p/4455175.html
Copyright © 2011-2022 走看看