nyoj 水池数目(DFS)
来源:互联网 发布:c和java哪个好就业 编辑:程序博客网 时间:2024/05/01 14:47
水池数目
南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池。
Input
第一行输入一个整数N,表示共有N组测试数据
每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水池,0表示此处是地面)
每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水池,0表示此处是地面)
Output
输出该地图中水池的个数。
要注意,每个水池的旁边(上下左右四个位置)如果还是水池的话的话,它们可以看做是同一个水池。
要注意,每个水池的旁边(上下左右四个位置)如果还是水池的话的话,它们可以看做是同一个水池。
Sample Input
23 41 0 0 0 0 0 1 11 1 1 05 51 1 1 1 00 0 1 0 10 0 0 0 01 1 1 0 00 0 1 1 1
Sample Output
23
代码1:
#include<stdio.h>#include<string.h>int a[101][101],n,vis[101][101],m;//开两个数组同时搜索,时间少,但消耗内存大void dfs(int i,int j)//记忆化搜索{ if(a[i+1][j]&&!vis[i+1][j]) { vis[i+1][j]=1; dfs(i+1,j); } if(a[i-1][j]&&!vis[i-1][j]) { vis[i-1][j]=1; dfs(i-1,j); } if(a[i][j+1]&&!vis[i][j+1]) { vis[i][j+1]=1; dfs(i,j+1); } if(a[i][j-1]&&!vis[i][j-1]) { vis[i][j-1]=1; dfs(i,j-1); }}int main(){ int t; scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); memset(vis,0,sizeof(vis)); scanf("%d%d",&n,&m); int i,j,sum=0; for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&a[i][j]); for(i=1;i<=n;i++) for(j=1;j<=m;j++) { if(a[i][j]&&!vis[i][j]) { sum++; vis[i][j]=1; dfs(i,j); } } printf("%d\n",sum); } return 0;}
代码2:
#include<stdio.h>#include<string.h>int a[101][101],n,m;int search(int i,int j)//记忆化搜索{ if(a[i-1][j]){a[i-1][j]=0;search(i-1,j);} if(a[i+1][j]){a[i+1][j]=0;search(i+1,j);} if(a[i][j-1]){a[i][j-1]=0;search(i,j-1);} if(a[i][j+1]){a[i][j+1]=0;search(i,j+1);}}int main(){ int t; scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); int i,j,sum=0; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&a[i][j]); for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(a[i][j]) { sum++; a[i][j]=0; search(i,j); } printf("%d\n",sum); } return 0;}
1 0
- nyoj 水池数目(DFS)
- NYOJ - 水池数目(DFS)
- nyoj 水池数目(dfs)
- NYOJ 题目27 水池数目(dfs)
- nyoj--27--水池数目(dfs)
- NYOJ 27 水池数目 (BFS,DFS)
- NYOJ 27 水池数目 (DFS)
- NYOJ 27 水池数目 (dfs)
- NYOJ—水池数目(DFS)
- 【NYOJ 27 水池数目 DFS】
- NYOJ-27 水池数目 DFS
- NYOJ 27 水池数目 【DFS】
- NYOJ 27 水池数目 (DFS)
- NYOJ 27 水池数目(dfs)
- NYOJ 27 水池数目(DFS)
- nyoj 27 水池数目【DFS】
- NYOJ--27--dfs--水池数目
- 水池数目【nyoj-27】【dfs】
- 计算机视觉三大国际会议:ICCV, CVPR,ECCV
- Android studio 插件
- 第十四周数组逆序
- 输入一个数插入有序数组中
- Mybatis Generator最完整配置详解
- nyoj 水池数目(DFS)
- Oracle中的NVL函数
- IDEA使用Maven-Springmvc
- [李景山php]每天TP5-20170106|thinkphp5-Hook.php
- numa init
- 搭建本地SVN服务器完整流程
- linux 查看访问本机ip次数
- numa init 2
- OC中关于字符串的操作