原题地址:点击打开链接

深搜超时,用广度搜索,由于碰到‘B’时需要先将墙销毁,该步的实现方法,可以先将该点加入队列,出队时判断,如果是墙(‘B’)就先变成空(‘E’)在加入队列即可。

#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
struct Point
{int x;int y;
}tar,my;
char map[310][310];
int used[310][310];
int x[4]={-1,0,1,0},y[4]={0,1,0,-1},min,n,m;
int bfs(Point my)
{int t=0,res=0,a,b,i;queue<Point>que[2];que[t].push(my);while(1){while(!que[t].empty()){Point p=que[t].front();que[t].pop();if(map[p.x][p.y]=='B'){map[p.x][p.y]='E';que[1-t].push(p);continue;}else if(map[p.x][p.y]=='T')return res;for(i=0;i<4;i++){a=p.x+x[i];b=p.y+y[i];if(a>=0&&a<n&&b>=0&&b<m&&used[a][b]!=1&&map[a][b]!='R'&&map[a][b]!='S'){used[a][b]=1;Point pt={a,b};que[1-t].push(pt);}   }}res++;if(que[1-t].empty())return -1;t=1-t;}
}
int main()
{int i,j;while(scanf("%d%d",&n,&m)&&n&&m){memset(used,0,sizeof(used));getchar();for(i=0;i<n;i++)gets(map[i]);for(i=0;i<n;i++)for(j=0;j<m;j++){if(map[i][j]=='Y'){my.x=i;my.y=j;}else if(map[i][j]=='T'){tar.x=i;tar.y=j;}}int res=bfs(my);printf("%d\n",res);}return 0;
} 

NYOJ284坦克大战广度搜索相关推荐

  1. NYOJ-284 坦克大战

    坦克大战 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 Many of us had played the game "Battle city" i ...

  2. nyoj284 坦克大战(dijkstra(bfs+优先队列))

    题目284 题目信息 运行结果 本题排行 讨论区 坦克大战 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 3 描述 Many of us had played the ga ...

  3. NYOJ284坦克大战

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=284 BFS求最短路,这个题走到'B'点是要花费2个时间,'E'是1个时间,所以要用一个优 ...

  4. c语言课程设计坦克大战,funcodec++课程设计_坦克大战

    <funcodec++课程设计_坦克大战>由会员分享,可在线阅读,更多相关<funcodec++课程设计_坦克大战(24页珍藏版)>请在人人文库网上搜索. 1.课程设计一 坦克 ...

  5. python坦克大战_Life is short,you need Python——Python实现坦克大战(一)

    先展示一下效果 搓搓小手手,坦克大战即将开始--https://www.zhihu.com/video/1140743290784817152 一.游戏引擎的安装 安装方式有两种:1.pip安装 wi ...

  6. 一个C语言编写的坦克大战游戏

    在VC6.0平台下运用一个EasyX的图形库,用C语言编写了一个坦克大战的小游戏,代码和算法都是我自己源生的.文章的两幅配图,分别展示了游戏的开始选择界面和正在游戏界面.这个小游戏,具有游戏背景音乐, ...

  7. c语言编写坦克大战设计报告,c语言编写坦克大战源代码

    <c语言编写坦克大战源代码>由会员分享,可在线阅读,更多相关<c语言编写坦克大战源代码(10页珍藏版)>请在人人文库网上搜索. 1.include tank.h#include ...

  8. JavaScript面向对象实现-坦克大战(附前端全套学习路线)

    [课程简介] 使用javascript+面向对象实现一个坦克大战游戏,让更多的同学能更加深入地理解面向对象思想. [主讲内容] 1. 讲解什么是面向对象,javascript中如何实现面向对象 2. ...

  9. java坦克大战 实训报告_程序设计实训坦克大战实验报告

    <程序设计实训坦克大战实验报告>由会员分享,可在线阅读,更多相关<程序设计实训坦克大战实验报告(12页珍藏版)>请在金锄头文库上搜索. 1. 程序设计实训报告坦克大战专业班级: ...

最新文章

  1. WF4.0 基础篇 (三) 流程实例WorkflowApplication与设计WF程序的基本原则
  2. HTML 表格tablecaptionthtrtdtheadtbodytfootcolcolgroup
  3. C++子类父类构造函数的关系
  4. sqlserver导出带数据的脚本文件
  5. Vue:触发视图更新的hack
  6. Visual Studio Code环境变量配置
  7. HTML图形映射技术
  8. JAVA设置按钮无效_JAVA设置的按钮监听没有反应
  9. 全国各地 DNS 服务器 IP 总汇
  10. (转)kafka 详解
  11. async和await用法
  12. 542. 01 矩阵
  13. Java 操作Word书签(三):用文本、图片、表格替换书签
  14. 国内随时接收发送谷歌邮箱
  15. (VGG)VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION--Karen Simonyan
  16. MSP430F149利用JTAG以及BSL下载配置图解!
  17. 终端模拟器编译c语言,开源一个Flutter编写的完整终端模拟器
  18. 3D游戏与编程——UI系统
  19. HTML背景图片和背景渐变
  20. 惹人的应聘简历/邮件是怎样的

热门文章

  1. 2022年阿里云双十二服务器活动内容汇总及价格表
  2. 盘点阿里云服务器活动【最新活动】2核4G 1M带宽 40G高效云盘 云服务器【19/月,269/年,699/3年】
  3. Android面试题最全总结系列 (持续更新中...)
  4. docker alpine包管理工具 apk
  5. Privileged instruction
  6. SVN clean up失败或是lock等问题解决方案
  7. 通过ip查询域名信息
  8. 误删桌面文件如何恢复?
  9. Cadence电路原理图全部变成黄色如何解决?
  10. 区块链取证设备,了解一下