zoukankan      html  css  js  c++  java
  • GZS与小公园(DFS)

    Description

    某天GZS漫步在学校新建的小公园,他发现那里建成了一些水池和小河道。我们暂且把它们统一看成水池。假设公园旁有一张小公园的地图,上面仅标识了此处是否是水池,你能帮GZS计算出该地图中一共有几个水池吗。

    Input

    第一行输入一个整数N,表示共有N组测试数据 每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水池,0表示此处是地面)

    Output

    输出该地图中水池的个数。

    Sample Input 1 

    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
    

    Sample Output 1

    2
    3

    Hint

    要注意,每个水池的旁边(上下左右四个位置)如果还是水池的话的话,它们可以看做是同一个水池。

    Source

    qduoj 第一次月赛 for 2014级

    深搜一下就ok

    代码:

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<iostream>
    
    using namespace std;
    int map[105][105];
    int vis[105][105];
    int l,r;
    int dis[4][2]= {{0,1},{0,-1},{-1,0},{1,0}};
    int dfs(int x,int y) {
    	vis[x][y]=1;
    	for(int t=0; t<4; t++) {
    		int xx=x+dis[t][0];
    		int yy=y+dis[t][1];
    		if(xx>=0&&yy<r&&yy>=0&&xx<l&&map[xx][yy]==1&&vis[xx][yy]==0) {
    			map[xx][yy]=0;
    			dfs(xx,yy);
    		}
    
    	}
    }
    int main() {
    	int n;
    	cin>>n;
    	for(int t=0; t<n; t++) {
    		int sum=0;
    		scanf("%d%d",&l,&r);
    		memset(map,0,sizeof(map));
    		memset(vis,0,sizeof(vis));
    		for(int j=0; j<l; j++) {
    			for(int k=0; k<r; k++) {
    				scanf("%d",&map[j][k]);
    
    			}
    		}
    		for(int j=0; j<l; j++) {
    			for(int k=0; k<r; k++) {
    				if(map[j][k]==1) {
    
    					dfs(j,k);
    					sum++;
    //	   		cout<<j<<" "<<k<<endl;
    				}
    			}
    		}
    
    		printf("%d
    ",sum);
    	}
    
    
    
    
    	return 0;
    }
  • 相关阅读:
    Console.WriteLine输出字符格式化
    GridView动态生成列问题
    日历控件,可运行在XHTML1.0下
    GridView內容導出Excel時異常:必须置於有 runat=server 的表单标记之中
    圆弧分割
    矩阵变换
    使用group by 来统计的小作业
    group by 后使用 rollup 子句总结
    mysql字符串拼接,存储过程,(来自网上看到)
    【深入理解Linux内核】《第二章 内存寻址》笔记 (2014-06-28 12:38)
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10781855.html
Copyright © 2011-2022 走看看