X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废。
某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?
已知的地图是一个方阵,上面用字母标出了A,B区,其它区都标了正号或负号分别表示正负能量辐射区。
例如:
A + - + -
- + - - +
- + + + -
+ - + - +
B + - + -
坦克车只能水平或垂直方向上移动到相邻的区。
首先想到的是dfs,每次更新最小值,于是,超时,,恍然大悟,改用bfs。
最短路问题通常都可以考虑使用BFS宽搜。
- #include
- using namespace std;
- int n;
- char mp[102][102];
- int ans;
- int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
- bool st[102][102];
- int flag=0;
- struct node{
- int x,y,step;
- };
- void bfs(int x,int y){
- queue
q; - q.push({x,y,0});
- st[x][y]=1;
- while(q.size()){
- node t=q.front();q.pop();
- x=t.x,y=t.y;
- int step=t.step;
- if(mp[x][y]=='B'){
- flag=1;
- ans=step;
- return ;
- }
- for(int i=0;i<4;i++){
- int xx=x+dx[i];
- int yy=y+dy[i];
- if(xx>=0&&xx
=0&&yy - q.push({xx,yy,step+1});
- st[xx][yy]=1;
- }
- }
- }
- }
- int main() {
- cin>>n;
- for(int i=0;i
- for(int j=0;j
>mp[i][j]; - }
- st[0][0]=1;
- for(int i=0;i
- for(int j=0;j
- if(mp[i][j]=='A'){
- bfs(i,j);break;
- }
- }
- }
- if(flag)
- cout<
- else cout<<-1;
- }
-
相关阅读:
vue-router路由守卫进阶
自组织是管理者和成员的双向奔赴
Aspose.Cells for Python via .NET crack
聊聊pert图的那些事儿~
MySQL 表数据多久刷一次盘?
Spring Security跨站请求伪造(CSRF)
Elasticsearch应用场景(三)
tomcat
【Linux】进程优先级(PRI,NI)和进程切换
Windows11 安全中心页面不可用问题(无法打开病毒和威胁防护)解决方案汇总(图文介绍版)
-
原文地址:https://blog.csdn.net/qq_63128300/article/details/136345554
-
最新文章
-
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU