ZOJ-1649-Rescue

news/2024/11/26 23:47:21/

BFS题,由于其存在可以消灭警卫的问题,所以其需要求出地图中每个方格的最小步数。更新的时候应该是如果当前值小于 格子的值才进行更新操作,否则是不用更新的。

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
using namespace std;
const int maxn=205;
struct node
{int x;int y;int ans;
};
char map[maxn][maxn];
int r,c,movex[4]={1,-1,0,0},movey[4]={0,0,-1,1},ans[maxn][maxn];
queue<node> q;
int main()
{while(scanf("%d%d",&r,&c)!=EOF){memset(ans,-1,sizeof(ans));for(int i=0;i<=r+1;i++)map[i][0]=map[i][c+1]='#';for(int i=0;i<=c+1;i++)map[0][i]=map[r+1][i]='#';int ex,ey;for(int i=1;i<=r;i++){getchar();for(int j=1;j<=c;j++){scanf("%c",&map[i][j]);if(map[i][j]=='a'){q.push((node){i,j,0});}else if(map[i][j]=='r'){ex=i;ey=j;}}}while(!q.empty()){node ita=q.front();q.pop();for(int i=0;i<4;i++){int x=ita.x+movex[i];int y=ita.y+movey[i];if(map[x][y]=='#')continue;if(ans[x][y]==-1||ans[x][y]>ita.ans+1){if(map[x][y]=='x'){q.push((node){x,y,ita.ans+2});ans[x][y]=ita.ans+2;}else{q.push((node){x,y,ita.ans+1});ans[x][y]=ita.ans+1;}}}}if(ans[ex][ey]==-1)printf("Poor ANGEL has to stay in the prison all his life.\n");elseprintf("%d\n",ans[ex][ey]);}return 0;
}



http://www.ppmy.cn/news/197706.html

相关文章

Nginx配置文件详解说明

#启动子进程程序默认用户 #user nobody; #一个主进程和多个工作进程。工作进程是单进程的&#xff0c;且不需要特殊授权即可运行&#xff1b;这里定义的是工作进程数量 worker_processes 1;#全局错误日志的位置及日志格式 #error_log logs/error.log; #error_log logs/erro…

嵌入式Linux ALSA工具交叉编译问题解决

记录交叉编译alsa-utils时遇到的问题与解决过程问题1. configure时提示缺少libasound2 解决&#xff1a;先安装alsa-lib库。 问题2. configure出现错误&#xff1a; checking for panel.h… no configure: error: required curses helper header not found 解决&#xff1…

Zookeeper单例搭建与伪集群搭建

Zookeeper单例搭建与伪集群搭建 搭建方式单机安装伪集群搭建 搭建方式 单机模式—— 运行在一台机器上集群模式—— 运行在多个机器上形成"集合体"伪集群模式—— 一台机器上运行多个Zookeeper 单机安装 下载地址&#xff1a; http://zookeeper.apache.org/releas…

Zookeeper 3、Zookeeper工作原理(详细)

Zookeeper 3、Zookeeper工作原理&#xff08;详细&#xff09; 1、Zookeeper的角色 领导者&#xff08;leader&#xff09;&#xff0c;负责进行投票的发起和决议&#xff0c;更新系统状态    学习者&#xff08;learner&#xff09;&#xff0c;包括跟随者&#xff08;fol…

linux交叉编译报错,交叉编译几种常见的报错

Linux C 相关 交叉编译几种常见的报错 由于是第一次交叉编译&#xff0c;不知道会出现什么问题&#xff0c;思路就是先把gcc和ld都改成arm的&#xff0c;然后 遇到什么问题在解决什么问题&#xff0c;以下过程都是在这个思路下进行。 1.指定arm的编译器和连接器&#xff1a; 只…

zookeeper原理(转)

ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;它包含一个简单的原语集&#xff0c;分布式应用程序可以基于它实现同步服务&#xff0c;配置维护和命名服务等。Zookeeper是hadoop的一个子项目&#xff0c;其发展历程无需赘述。在分布式应用…

kafka+zookeeper集群完整配置

文章目录 一、材料准备二、网络配置三、安装jdk8四、安装zookeeper集群五、安装kafka集群六、kafka集群配置ACL权限七、相关脚本编写 一、材料准备 免费下载地址&#xff1a;https://download.csdn.net/download/weixin_40496191/85320269 三台虚拟机&#xff1a;192.168.248…

zookeeper的C客户端API介绍及编译测试程序(未完待续11/01,缺测试程序)

文章目录 一、初始化、销毁 Zookeeper 句柄1&#xff09;初始化zookeeper句柄2&#xff09;销毁zookeeper句柄 二、辅助函数1&#xff09;设置日志等级2&#xff09;获取客户端的 session id&#xff0c;只有在客户端的当前连接状态有效时才可以。3&#xff09;返回当前会话的超…