sdau-2 1011
来源:互联网 发布:网络工作模式有哪些 编辑:程序博客网 时间:2024/05/17 05:59
描述:
油田问题,
连成一片的@是油田,求有几个油田1 1*3 5*@*@***@***@*@*1 8@@****@*5 5****@*@@*@*@***@@@*@@@**@0 0
思路:
课件上有,上课讲过,基础深搜,不解释。
代码:
#include<iostream>
#include<cstring>
#include<fstream>
using namespace std;
int m,n;
char map[110][110];
int d[8][2]={{-1,0},{1,0},{0,1},{0,-1},{-1,-1},{-1,1},{1,-1},{1,1}};
bool v[110][110];
bool bound(int a,int b){
if(a<0||a>=m||b<0||b>=n)
return 1;
else
return 0;
}
void dfs(int x, int y)
{
for (int i = 0; i < 8; ++i)
{
if (map[x + d[i][0]][y + d[i][1]] == '*') continue;
if (bound(x + d[i][0], y + d[i][1])) continue;
if (v[x + d[i][0]][y + d[i][1]]) continue;
v[x + d[i][0]][y + d[i][1]] = 1;
dfs(x + d[i][0], y + d[i][1]);
}
}
int main(){
while (cin >> m >> n&&m != 0 && n != 0)
{
memset(v, 0, sizeof(v));
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
cin >> map[i][j];
int s = 0;
for (int i = 0; i < m; ++i)
{
for (int j = 0; j < n; ++j)
if (map[i][j] == '@'&&!v[i][j])
{
v[i][j] = 1;
dfs(i, j);
s++;
}
}
cout << s << endl;
}
return 0;
}
- sdau-2 1011
- SDAU 课程练习2 1011
- SDAU课程练习1011
- SDAU练习二1011
- SDAU dp专题 1011
- sdau三 1011
- sdau-2 1001
- sdau-2 1002
- sdau-2 1003
- sdau-2 1008
- sdau-2 1012
- sdau-2 1010
- sdau-2 1013 1014
- sdau-2 1015
- sdau-2 1017
- sdau-2 1019
- SDAU课程练习2 1008
- SDAU 课程练习2 1001
- R 数据读入
- 正则表达式的判断
- Struts2中的类型转换器学习(升级版)
- Hadoop MapReduce排序程序
- 相关记录(待整理)
- sdau-2 1011
- Android SDK目录下的各个文件夹的作用
- javaFX的一些简单类
- Noip2004普及组
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 G. 易彰彪的一张表
- [每周一读]——不让时间偷走你的成功
- 一周乱弹(1,绝对路径中的 / 代表什么 2,jsp include标签 3,java 获取ip地址问题,4,springMVC @RequestMapping 传递多个参数5,jQuery模糊搜索)
- Hadoop MapReduce数据去重程序
- AsyncTask解析(上)——原理分析与超简单demo实现