TOJ1334
1334: Oil Deposits
总提交: 555 测试通过:404
描述
The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides the land into numerous square plots. It then analyzes each plot separately, using sensing equipment to determine whether or not the plot contains oil. A plot containing oil is called a pocket. If two pockets are adjacent, then they are part of the same oil deposit. Oil deposits can be quite large and may contain numerous pockets. Your job is to determine how many different oil deposits are contained in a grid.
输入
The input file contains one or more grids. Each grid begins with a line containing m and n, the number of rows and columns in the grid, separated by a single space. If m = 0 it signals the end of the input; otherwise 1 <= m <= 100 and 1 <= n <= 100. Following this are m lines of n characters each (not counting the end-of-line characters). Each character corresponds to one plot, and is either `*', representing the absence of oil, or `@', representing an oil pocket.
输出
For each grid, output the number of distinct oil deposits. Two different pockets are part of the same oil deposit if they are adjacent horizontally, vertically, or diagonally. An oil deposit will not contain more than 100 pockets.
样例输入
1 1
*
3 5
*@*@*
**@**
*@*@*
1 8
@@****@*
5 5
****@
*@@*@
*@**@
@@@*@
@@**@
0 0
样例输出
0
1
2
2
题目来源
题解:
题目意思是判断油带的数量,相邻油田属于同一油带,相邻,是指两个小正方形区域上下、左右、左上右下或左下右上同为’@’。
简单深搜。
#include<iostream>
using namespace std;
int x,y,i,j,s;
char arr[101][101];
int g[8]={0,0,1,1,1,-1,-1,-1};
int q[8]={1,-1,0,-1,1,0,1,-1};
int dfs(int a,int b)
{
if(a<0||b<0||a>=x||b>=y)return 0;
if(arr[a][b]=='*')return 0;
arr[a][b]='*';
for(int k=0;k<8;k++)
{
dfs(a+g[k],b+q[k]);
}
}
int main()
{
while(cin>>x>>y)
{
if(x==0&&y==0)break;
s=0;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
cin>>arr[i][j];
}
}
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
if(arr[i][j]=='@')
{
s++;
dfs(i,j);
}
}
}
printf("%d\n",s);
}
}
TOJ1334的更多相关文章
随机推荐
- HTML中强大的input标签属性
用了许久的html,<input>这个标签是最常用的标签之一. <input type="">标签中type属性是必不可少的,以往我最常用的有 type=& ...
- 【初级】linux pwd 命令详解及使用方法实战
pwd:查看当前工作目录 前言: Linux中用 pwd 命令来查看”当前工作目录“的完整路径,就是经常提及的所在目录,多用在生产环境多级目录中查看当前所在路径,使用此命令能给运维人员/操作人员带来很 ...
- A、B、C、D和E类IP地址
IP地址分为A,B,C,D,E五类. 网络号:用于识别主机所在的网络:主机号:用于识别该网络中的主机. 其中A类分配给政府机关使用,B类地址给大中型企业使用,C类地址给个人使用.这三种是主要的. IP ...
- js回顾2
1:事件流:一个事件发生时按一个方向传播 eg:a标签->html 冒泡:从里到外(一般的选择)-----IE只有冒泡 捕获:从外到里-----网景只有捕获(已经不存在了) 2.事件处理的两种种 ...
- C++ 11 lambda
转载:http://www.cnblogs.com/kedebug/p/3224561.html lambda 表达式的简单语法如下:[capture] (parameters) -> retu ...
- 启动Tomcat一闪而过——分析及解决过程
启动Tomcat一闪而过--分析及解决过程 嗯,昨天将有关JDK的知识稍微整理了一下,现在稍微整理一下有关Tomcat的! 1:Tomcat是什么? Tomcat是当今世界上使用最为广泛的.开源免费的 ...
- CIImage实现滤镜效果
Core Image also provides autoadjustment methods that analyze an image for common deficiencies and re ...
- Java第六次作业修改版
import java.util.ArrayList; import java.util.Collections; import java.util.Random; public class Draw ...
- C语言文法分析
程序 → <外部声明>|<程序><外部声明> <外部声明> → <函数定义> | <声明> <函数定义> → < ...
- 关于css的新思考
因为被派去协助别的组,有机会写了一下react,发现ICE做的那一个套件用来搭建后台系统真的太给力了(插一句必入table组件其实是可以把删除添加座位基础方法加进去的).因为看了demo的代码以及对于 ...