Oh,mygoddess
很早的时候就看了这一道题目 , 当时不会做 , 现在 边听歌边写无压力 ........
题意 : 光辉骑士 一直都在 迷宫的右上角 , 第一行给你迷宫的规格 , 下面是迷宫 "O" 代表空地需要花一个单位时间跨越 , "#" 代表
墙 ,需要三个单位的时间把墙破开 , 也就是 "O"为一个时间 "#"为4个时间 .
下面附上代码 .
#include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #include<algorithm> #include<queue> #include<vector> #include<set> #include<stack> #include<string> #include<sstream> #include<map> #include<cctype> using namespace std; struct node { int x,y,step; friend bool operator <(node s1,node s2) { return s1.step>s2.step; } }; char a[52][52]; int n,m,tx,ty,b[4][2]={0,-1,0,1,-1,0,1,0},visited[52][52]; priority_queue<node>Q; int BFS(int x,int y) { node q={x,y,0}; Q.push(q); while(!Q.empty()) { node e=Q.top(); // 怎么会把 这里 忘了呢 ? Q.pop(); for(int i=0;i<4;i++) { q.x=e.x+b[i][0],q.y=e.y+b[i][1]; //怎么 整天 都 弄错 ? if(q.x>=0&&q.x<m&&q.y>=0&&q.y<n&&!visited[q.y][q.x]) { if(a[q.y][q.x]=='O') q.step=e.step+1; if(a[q.y][q.x]=='#') q.step=e.step+4; visited[q.y][q.x]=1; Q.push(q); if(q.x==tx&&q.y==ty) //注意 安放的位置 { return q.step; } } } } } int main() { while(scanf("%d%d",&n,&m)!=EOF) { for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { scanf(" %c",&a[i][j]); } } scanf("%d%d",&ty,&tx); tx--; ty--; memset(visited,0,sizeof(visited)); visited[0][0]=1; while(!Q.empty()) // 注意 清空 Q.pop(); int mark=BFS(0,0); printf("%d\n",mark); } }
分类:
搜索
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp
· drools 规则引擎和 solon-flow 哪个好?solon-flow 简明教程