UVA572-油田 Oil Deposits(DFS)

简介: UVA572-油田 Oil Deposits(DFS)


样例输入:


1 1

*

3 5

*@*@*

**@**

*@*@*

1 8

@@****@*

5 5

****@

*@@*@

*@**@

@@@*@

@@**@

0 0


样例输出:


0

1

2

2


AC Code:


#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s[101][101];//存入地图的数组 
int sum,n,m;
int vis[101][101];//标记数组 
int dx[]={-1,0,1,-1,1,-1,0,1};//题中说的是横、竖、对角线,所以有8个方向 
int dy[]={-1,-1,-1,0,0,1,1,1};
bool judge(int x,int y) {
  if(x>=0&&x<n&&y>=0&&y<m&&vis[x][y]==0&&s[x][y]=='@')//越界判断 
    return true;
  return false;
}
void dfs(int x,int y) {
  vis[x][y]=1;//标记访问过的每个点 
  for(int k=0;k<8;k++) {//8个方向搜索 
    int tx=x+dx[k];
    int ty=y+dy[k];
    if(judge(tx,ty)) {
      dfs(tx,ty);
    }
  }
}
int main() {
  while(~scanf("%d %d",&n,&m)) {//多实例输入 
    if(!n&&!m)//n和m均为0,输入结束 
      break;
    for(int i=0;i<n;i++)
      for(int j=0;j<m;j++)
        scanf(" %c",&s[i][j]);//%前面的空格确保地图可以完整输入 
    memset(vis,0,sizeof(vis));//标记数组清零 
    sum=0;//油田数量 
    for(int i=0;i<n;i++) {
      for(int j=0;j<m;j++) {
        if(vis[i][j]==0&&s[i][j]=='@') {//此点未被访问,从找到的某个油田处开始搜索 
          sum++;//数量加1,并且搜索出与这个油田相连的所有油田,算1个石油区域 
          dfs(i,j);
        }
      }
    }
    printf("%d\n",sum);
  }
  return 0;
} 
相关文章
|
JavaScript
vue的computed中的getter和setter
vue的computed中的getter和setter
|
存储 JSON 安全
解锁互联网安全的新钥匙:JWT(JSON Web Token)
解锁互联网安全的新钥匙:JWT(JSON Web Token)
600 0
|
XML Java Android开发
Android Studio App开发之翻页视图ViewPager的讲解及实战(附源码 包括翻页视图和翻页标签栏)
Android Studio App开发之翻页视图ViewPager的讲解及实战(附源码 包括翻页视图和翻页标签栏)
1587 0
|
11月前
|
存储 人工智能 OLAP
云端问道10期方案教学-百炼融合AnalyticDB,10分钟创建网站AI助手
本次分享由阿里云产品经理陈茏久介绍,主题为“百炼融合 AnalyticDB,10 分钟创建网站 AI 助手”。内容涵盖五个部分:大模型带来的行业变革、向量数据库驱动的 RAG 服务化探索、方案及优势与典型场景应用案例、产品选型配置介绍以及最新发布。重点探讨了大模型在各行业的应用,AnalyticDB 的独特优势及其在构建企业级知识库和增强检索服务中的作用。通过结合通义千问等产品,展示了如何在短时间内创建一个高效的网站 AI 助手,帮助企业快速实现智能化转型。
226 0
|
弹性计算 安全 Java
关于如何将Web项目部署到阿里云ecs服务器-5个步骤搞定
关于如何将Web项目部署到阿里云ecs服务器-5个步骤搞定
关于如何将Web项目部署到阿里云ecs服务器-5个步骤搞定
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之遇到iava.lang.NoClassDefFoundError: ververica/cdc/common/utils/StrinaUtils错误,是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
安全 数据处理 数据安全/隐私保护
基站(BTS)是无线通信的关键
【5月更文挑战第25天】基站(BTS)是无线通信的关键,包括宏基站、微基站、皮基站和飞基站等多种类型,覆盖不同区域。它们接收和处理移动设备信号,与核心网络交互确保通信稳定。基站提供通信覆盖,保障质量,支持数据传输,推动技术发展,并在应急情况下发挥关键作用。基站建设涉及选址、安装和线缆敷设,需定期维护和升级。尽管基站电磁辐射引发关注,但科学研究显示其辐射水平在安全范围内,且通信企业持续采取措施降低影响。了解基站有助于我们更好地理解和利用通信服务。
669 2
|
Java 测试技术 Maven
Spring整合JUnit实现单元测试
本文介绍了如何在Java开发中使用Spring与JUnit进行单元测试。首先,设置JUnit和Spring环境,创建待测试的业务逻辑类,如MyService。接着,编写JUnit测试类MyServiceTest,使用`@RunWith(SpringJUnit4ClassRunner.class)`和`@ContextConfiguration`注解,注入并测试MyService的方法。此外,借助Mockito模拟依赖对象,以及使用Spring TestContext框架进行集成测试,确保测试的隔离性和环境的稳定性。通过这些方法,可以提升代码质量和测试效率。
311 1
|
SQL Java 数据库
dts在数据迁移过程中,出现“无效的表或视图名”错误
dts在数据迁移过程中,如果出现“无效的表或视图名”错误
1575 6
|
存储 编解码 前端开发
【计算机基础】多媒体技术、网页制作、计算机网络(二)
【计算机基础】多媒体技术、网页制作、计算机网络
5178 1