永发信息网

acm 勘探油田

答案:1  悬赏:0  手机版
解决时间 2021-04-29 20:26

描述

某石油勘探公司正在按计划勘探地下油田资源。他们工作在一片长方形的地域中,首先将该地域划分为许多小正方形区域,然后使用探测设备分别探测每一块小正方形区域是否有油。若在一块小正方形区域中探测到有油,则标记为’@’,否则标记为’*’。如果两个相邻区域都为1,那么它们同属于一个石油带,一个石油带可能包含很多小正方形区域,而你的任务是要确定在一片长方形地域中有多少个石油带。所谓相邻,是指两个小正方形区域上下、左右、左上右下或左下右上同为’@’。

输入

输入数据将包含一些长方形地域数据,每个地域数据的第一行有两个正整数m和n,表示该地域为m*n个小正方形所组成,如果m为0,表示所有输入到此结束。否则,后面m(1≤m≤100)行数据,每行有n(1≤n≤100)个字符,每个字符为’@’或’*’,表示有油或无油。每个长方形地域中,’@’的个数不会超过100。

输出

每个长方形地域,输出油带的个数,每个油带值占独立的一行。油带值不会超过100。

样例输入

3 5 *@*@* **@** *@*@* 0 0

样例输出

1

解题报告

最佳答案

简单的搜索题,可以用DFS解决。以下是我的代码,LZ可以看一下:



#include<iostream>
#include<cstring>


using namespace std;


const int N=105;


char s[N][N];
bool map[N][N];
int d[8][2]={1,0,0,1,-1,0,0,-1,1,1,1,-1,-1,1,-1,-1};
int n,m;


void dfs(int x,int y)
{
int i,tx,ty;
map[x][y]=false;
i=0;
while(i<8)
{
tx=x+d[i][0];
ty=y+d[i][1];
if(tx>=0&&ty>=0&&tx<n&&ty<m&&s[tx][ty]=='@'&&map[tx][ty])
dfs(tx,ty);
i++;
}
return;
}


int main()
{
int i,j,ans;
while(scanf("%d%d",&n,&m)==2)
{
i=0;
while(i<n)
scanf("%s",s[i++]);
memset(map,true,sizeof(map));
ans=0;
i=0;
while(i<n)
{
j=0;
while(j<m)
{
if(s[i][j]=='@'&&map[i][j])
{
dfs(i,j);
ans++;
}
j++;
}
i++;
}
printf("%d\n",ans);
}
return 0;
}


我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
三里洞中小学在哪里啊,我有事要去这个地方
如何按摩眼睛
全款买房有优惠吗,为什么全款买房能给优惠
怀孕一个月可以上夜班吗?
怎样喝酒不容易伤身??
比如从外地长期进货,如何签订合同和付款!
你觉得男女朋友之间能有纯正的友情吗?
华硕m5000开机不亮 有是会花屏 内存小很小那
歌曲的后期制作问题
口袋精灵里的天使光环怎么得到?
芳卉医疗器械经营部怎么去啊,有知道地址的么
MP5突然就开不开机了,怎么办?
用铁锤和椰子打头哪个会更痛?
水生植物有哪些谁能告诉我下面这个图片的植物
阿米尔汗电影经典台词,马志明的大保镖的台词
推荐资讯
到梦之岛买诺基亚5611xm欧版原装可靠吗?大概
分手了可不可以做朋友?可不可以回要以前呢?
为什么我DNF下载了安装不了
1991年阴历11月19是什么星座
硝化细菌和芽孢杆菌有什么关系?两者如何在培
这个夏天怎么避暑是最好的?
一朵鲜花为什么要插在牛粪上?
我和僵尸有个约会的最终大结局
新版规范要求屏蔽门与车门(静态)距离不大于
在阳泉考小车驾照需要多长时间,难不难?
用什么软件可以将多张图片连接成一张图片?
描写祖孙情的好诗句,老公有外遇要离婚怎么办
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?