码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-25 06:47:21      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

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\n",SUM);
63     }
64     return 0;
65 }
View Code

 

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

标签:

原文地址:http://www.cnblogs.com/LWF5201314614/p/4455175.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!