NYOJ 27

简介:   水池数目 时间限制:3000 ms | 内存限制:65535 KB 难度:4   描述南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池。

 

水池数目

时间限制: 3000 ms | 内存限制: 65535 KB
难度: 4
 
描述
南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池。
 
输入
第一行输入一个整数N,表示共有N组测试数据
每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水池,0表示此处是地面)
输出
输出该地图中水池的个数。
要注意,每个水池的旁边(上下左右四个位置)如果还是水池的话的话,它们可以看做是同一个水池。
样例输入
2
3 4
1 0 0 0 
0 0 1 1
1 1 1 0
5 5
1 1 1 1 0
0 0 1 0 1
0 0 0 0 0
1 1 1 0 0
0 0 1 1 1
样例输出
2
3
 1 //本来想把vis定位bool ,结果即便cin输入也不对老是不正确 
 2 #include <stdio.h>
 3 #include <string.h>
 4 
 5 int vis[101][101],m,n;
 6 int b1[4]={1,0,-1,0};
 7 int b2[4]={0,1,0,-1};
 8 
 9 void dfs(int i,int j)
10 {
11     int t;
12     vis[i][j]=0;
13     for(t=0; t<4; t++)
14     {
15         if(vis[i+b1[t]][j+b2[t]])
16             dfs(i+b1[t],j+b2[t]);
17     }
18 }
19 
20 int main()
21 {
22     int i,j,k,T;
23     int cnt;
24     scanf("%d",&T);
25     while(T--)
26     {
27           cnt = 0;
28         scanf("%d%d",&n,&m);
29         for(i=1; i<=n; i++)
30             for(j=1; j<=m; j++)
31                 scanf("%d",&vis[i][j]);
32         for(i=1; i<=n; i++)
33         {
34             for(j=1; j<=m; j++)
35                 if(vis[i][j])//1为水池 
36                 {
37                     cnt++;
38                     dfs(i,j);
39                 }
40         }
41         printf("%d\n",cnt);
42     }
43     return 0;
44 }        

 

 
   
目录
相关文章
|
测试技术
NYOJ 541
  最强DE 战斗力 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 春秋战国时期,赵国地大物博,资源非常丰富,人民安居乐业。但许多国家对它虎视眈眈,准备联合起来对赵国发起一场战争。
751 0
|
定位技术
NYOJ 20
  吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3   描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路)。
798 0
|
人工智能
NYOJ 138
  找球号(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5   描述 在某一国度里流行着一种游戏。游戏规则为:现有一堆球中,每个球上都有一个整数编号i(00) pos=(pos+1)%N; ch[pos]=num; } ...
787 0
NYOJ 19
  擅长排列的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4   描述 小明十分聪明,而且十分擅长排列计算。比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长。
738 0
|
测试技术
NYOJ 523
  亡命逃窜 时间限制:1000 ms | 内存限制:65535 KB 难度:4   描述   从前有个叫hck的骑士,为了救我们美丽的公主,潜入魔王的老巢,够英雄吧。不过英雄不是这么好当的。
899 0
NYOJ 366
View Code 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int main() 7 { 8 int i,j,k,T; 9 int n; 10 ...
743 0
NYOJ 93
  汉诺塔(三) 时间限制:3000 ms | 内存限制:65535 KB 难度:3   描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。
573 0
NYOJ 113
1 #include 2 #include 3 using namespace std; 4 5 int main() 6 { 7 int pos=-1; 8 string s; 9 while(getline(cin,s)) 10 { 11 while((pos=s.
659 0
|
测试技术
NYOJ 202
  红黑树 时间限制:3000 ms | 内存限制:65535 KB 难度:3   描述 什么是红黑树呢?顾名思义,跟枣树类似,红黑树是一种叶子是黑色果子是红色的树。。。 当然,这个是我说的。
797 0
|
人工智能
NYOJ 95
  众数问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3   描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数。
729 0