NYOJ284坦克大战广度搜索
原题地址:点击打开链接
深搜超时,用广度搜索,由于碰到‘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坦克大战广度搜索相关推荐
- NYOJ-284 坦克大战
坦克大战 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 Many of us had played the game "Battle city" i ...
- nyoj284 坦克大战(dijkstra(bfs+优先队列))
题目284 题目信息 运行结果 本题排行 讨论区 坦克大战 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 3 描述 Many of us had played the ga ...
- NYOJ284坦克大战
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=284 BFS求最短路,这个题走到'B'点是要花费2个时间,'E'是1个时间,所以要用一个优 ...
- c语言课程设计坦克大战,funcodec++课程设计_坦克大战
<funcodec++课程设计_坦克大战>由会员分享,可在线阅读,更多相关<funcodec++课程设计_坦克大战(24页珍藏版)>请在人人文库网上搜索. 1.课程设计一 坦克 ...
- python坦克大战_Life is short,you need Python——Python实现坦克大战(一)
先展示一下效果 搓搓小手手,坦克大战即将开始--https://www.zhihu.com/video/1140743290784817152 一.游戏引擎的安装 安装方式有两种:1.pip安装 wi ...
- 一个C语言编写的坦克大战游戏
在VC6.0平台下运用一个EasyX的图形库,用C语言编写了一个坦克大战的小游戏,代码和算法都是我自己源生的.文章的两幅配图,分别展示了游戏的开始选择界面和正在游戏界面.这个小游戏,具有游戏背景音乐, ...
- c语言编写坦克大战设计报告,c语言编写坦克大战源代码
<c语言编写坦克大战源代码>由会员分享,可在线阅读,更多相关<c语言编写坦克大战源代码(10页珍藏版)>请在人人文库网上搜索. 1.include tank.h#include ...
- JavaScript面向对象实现-坦克大战(附前端全套学习路线)
[课程简介] 使用javascript+面向对象实现一个坦克大战游戏,让更多的同学能更加深入地理解面向对象思想. [主讲内容] 1. 讲解什么是面向对象,javascript中如何实现面向对象 2. ...
- java坦克大战 实训报告_程序设计实训坦克大战实验报告
<程序设计实训坦克大战实验报告>由会员分享,可在线阅读,更多相关<程序设计实训坦克大战实验报告(12页珍藏版)>请在金锄头文库上搜索. 1. 程序设计实训报告坦克大战专业班级: ...
最新文章
- WF4.0 基础篇 (三) 流程实例WorkflowApplication与设计WF程序的基本原则
- HTML 表格tablecaptionthtrtdtheadtbodytfootcolcolgroup
- C++子类父类构造函数的关系
- sqlserver导出带数据的脚本文件
- Vue:触发视图更新的hack
- Visual Studio Code环境变量配置
- HTML图形映射技术
- JAVA设置按钮无效_JAVA设置的按钮监听没有反应
- 全国各地 DNS 服务器 IP 总汇
- (转)kafka 详解
- async和await用法
- 542. 01 矩阵
- Java 操作Word书签(三):用文本、图片、表格替换书签
- 国内随时接收发送谷歌邮箱
- (VGG)VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION--Karen Simonyan
- MSP430F149利用JTAG以及BSL下载配置图解!
- 终端模拟器编译c语言,开源一个Flutter编写的完整终端模拟器
- 3D游戏与编程——UI系统
- HTML背景图片和背景渐变
- 惹人的应聘简历/邮件是怎样的