NY理工题 水池数目
来源:互联网 发布:mac safari 缓存 编辑:程序博客网 时间:2024/05/16 16:01
第一次做深搜 找了个简单的题先练练
- 输入
- 第一行输入一个整数N,表示共有N组测试数据
每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水池,0表示此处是地面) - 输出
- 输出该地图中水池的个数。
要注意,每个水池的旁边(上下左右四个位置)如果还是水池的话的话,它们可以看做是同一个水池。 - 样例输入
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
- 样例输出
23
看了别人的博客才有的思路 假设从任意一点值为'1'的出发 每读入一个“1” 就把读入的1记为0;然后依次查找它的前后左右 同样也是每读入一个1就把读入的1记为0;直到图中没有1为止。
#include <iostream>
using namespace std;
char a[100][100];
int n,m;
void dfs(int x, int y)
{
if(0<=x&&x<n&&0<=y&&y<m&&a[x][y]=='1')
{
a[x][y] = '0';
dfs(x-1,y);
dfs(x+1,y);
dfs(x,y-1);
dfs(x,y+1);
}
return ;
}
int main(void)
{
int t;
cin>>t;
while(t--)
{
cin>>n>>m;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
cin>>a[i][j];
int count = 0;
for(int i = 0;i < n; i++)
for(int j = 0;j < m; j++)
{
if(a[i][j] == '1')
{
dfs(i,j);
count++;
}
}
cout<<count<<endl;
}
return 0;
} //AC
- NY理工题 水池数目
- ny-水池数目[深搜]
- 南阳理工27题水池数目
- 南阳理工:水池数目
- 南阳理工 27 水池数目
- 南阳理工oj-水池数目
- 水池数目 结题报告
- 水池数目(bfs模板题)
- 水池数目
- 水池数目
- 水池数目
- 水池数目
- 水池数目
- 水池数目
- 水池数目
- 水池数目
- 水池数目
- 水池数目
- 指针+1的问题
- android studio ndk工程开发及调试指南
- PHP截取中英混合字符串(UTF-8)
- Android SDK下各目录的用途,以及在不同系统下哪些是通用的
- EasyUI DataGrid动态加载数据
- NY理工题 水池数目
- iOS UIView 一些属性方法总结
- http://www.tuicool.com/articles/mYfy6n
- 编写优美的GTest测试案例
- 格式化app Json对象函数(我常用的)
- 【POJ 3628】Bookshelf 2(01背包)
- Ext两个jsp页面共享设置对象,属性
- C/C++超级大火锅
- unity lua热更新之 利用lua的table实现c#的new对象