红与黑

简介: 蒜厂有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。

请写一个程序,计算你总共能够到达多少块黑色的瓷砖。

输入格式

第一行是两个整数 WW 和 HH,分别表示 xx 方向和 yy 方向瓷砖的数量。WW 和 HH 都不超过 2020。

在接下来的 HH 行中,每行包括 WW 个字符。每个字符表示一块瓷砖的颜色,规则如下

1)'.':黑色的瓷砖;
2)'#':红色的瓷砖;
3)'@':黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。

输出格式

输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。

Input

6 9 
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
AI 代码解读

Output

45
AI 代码解读

思路:迷宫题,bfs!!

#include<algorithm>
#include<iostream>
#include<string.h>
#include<queue>
#include<vector>
#include<cstdio>
using namespace std;
int n,m,vis[25][25],a,b;
int dx[] = {-1,1,0,0},dy[] = {0,0,-1,1};//上下左右 
char Map[25][25];//迷宫地图 
struct que
{
    int x,y;
};
queue<que> q;
bool check(int x,int y)
{
    if(x<0||x>=n||y<0||y>=m) return false;//越界 
    if(vis[x][y]) return false;//已经走过 
    if(Map[x][y]=='#') return  false;//墙壁 
    
    return true;
}
void bfs()
{
    q.push({a,b});
    vis[a][b] = true;
    int cnt =1;
    while(!q.empty())
    {
        que t = q.front();
        q.pop();
        
        for(int i=0;i<4;i++)
        {
            int x = dx[i]+t.x;
            int y = dy[i]+t.y;
            if(!check(x,y)) continue;//非法 
            
            q.push({x,y});
            vis[x][y] = true;
            cnt++;
        }
    }
    cout<<cnt<<endl;
}
int main()
{
    cin>>m>>n;
    for(int i=0;i<n;i++)
    {
        scanf("%s",Map[i]);
        for(int j=0;j<m;j++)
        {
            if(Map[i][j]=='@')//起点 
            {
                a = i;
                b = j;
            }
        }
    }
    bfs();
    return 0;
}
AI 代码解读
檐晴
+关注
目录
打赏
0
0
0
0
42
分享
相关文章
Spring是如何保证同一事务获取同一个Connection的?使用Spring的事务同步机制解决:数据库刚插入的记录却查询不到的问题【享学Spring】(上)
Spring是如何保证同一事务获取同一个Connection的?使用Spring的事务同步机制解决:数据库刚插入的记录却查询不到的问题【享学Spring】(上)
解决Electron应用中Lottie动画无法正常显示
我们用Flutter Web开发了一个应用,通过electron进行打包成可执行文件,但是在使用时发现了一个问题,Lottie动画无法显示。 通过console的日志可以看到,提示lottie是undifine的,lottie是sdk提供的一个全局的对象,通过lottie.loadAnimation(options)可以加载显示Lottie动画,但是我们明明在index.html中引入了Lottie的js文件,而且在浏览器上也是可以正常使用的,为什么通过Electron打包后执行就失效了?
486 0
《阿里云产品手册2022-2023 版》——阿里云产品大图
《阿里云产品手册2022-2023 版》——阿里云产品大图
457 0
ubuntu 16.04安装软件常见错误 Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
  通过终端安装程序 sudo apt-get install xxx 时出错: E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it   因为刚装好的Ubantu系统,内部缺少很多软件源,这时,系统会自动启动软件源更新进程“apt-get”,并且它会一直存活。
2583 0
数据库设计流程
数据库设计流程,可以分为五步: 规划 需求分析 概念设计 逻辑设计 物理设计 规划 规划就是指考虑好建立数据库的必要性和可行性,明确数据库在整个项目中扮演的角色以及与其它干系角色之间的关系。
2415 0
Hadoop大数据平台实战(02):HBase vs. Hive vs. Impala 对比
Hadoop大数据平台实战(02):HBase vs. Hive vs. Impala 对比。
DataWorks调度依赖配置深度解析
规范的依赖关系配置后,您无需关心当前节点需要依赖表由哪个节点产出,通过DataWorks自动解析将一键为您设置任务依赖。
4372 0
DataWorks调度依赖配置深度解析
AI在医疗健康领域的应用
随着人工智能技术的不断发展,其在医疗健康领域的应用也日益广泛。从辅助诊断、个性化治疗方案的制定,到疾病预防和健康管理,AI技术都在发挥着重要作用。本文将探讨AI在医疗健康领域的应用,包括其在医学影像分析、基因编辑、药物研发等方面的应用,以及其对医疗行业未来发展的影响。
【Azure App Service】访问App Service应用报错 SSL: WRONG_VERSION_NUMBER(上海蓝云阻断页)
在Azure App Service上部署的应用遇到`SSL: WRONG_VERSION_NUMBER`错误。问题可能由不兼容的TLS版本引起,但即使将最小入站TLS版本改为1.2,问题仍存在。实际原因是上海蓝云的阻断页面,表明网站未完成ICP备案或有安全规定限制。解决方案包括:1) 对App Service绑定自定义域名并进行ICP备案,或2) 使用Application Gateway处理公网请求。在复杂环境中,需仔细排查和适配规则。
306 11
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问