nyoj 284 坦克大战 简单搜索
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=284
题意:在一个给定图中,铁墙,河流不可走,砖墙走的话,多花费时间1,问从起点到终点至少需要多少时间。
思路:简单广搜~
代码如下:
#include "stdio.h" //nyoj 284 坦克大战 简单搜索
#include "string.h"
#include "queue"
using namespace std; #define N 305
#define INF 0x3fffffff int n,m;
char map[N][N];
int Time[N][N];
int dir[4][2] = {{1,0},{-1,0},{0,1},{0,-1}}; struct node
{
int x,y;
int time;
}start,end; bool Budge(node a)
{
if(a.x<0 || a.x>=n || a.y<0 || a.y>=m || map[a.x][a.y]=='S' || map[a.x][a.y]=='R')
return true;
return false;
} int BFS()
{
int i;
queue<node> q;
q.push(start);
node cur,next;
while(!q.empty())
{
cur = q.front();
q.pop();
for(i=0; i<4; ++i)
{
next.x = cur.x+dir[i][0];
next.y = cur.y+dir[i][1];
if(Budge(next)) continue; //该点越界或不可走,continue;
next.time = cur.time+1;
if(map[next.x][next.y]=='B')
next.time++;
if(next.time<Time[next.x][next.y]) //该点访问的时间比原时间短,更新时间并将点加入队列
{
Time[next.x][next.y] = next.time;
q.push(next);
}
}
}
if(Time[end.x][end.y]==INF) return -1;
return Time[end.x][end.y];
} int main()
{
int i,j;
while(scanf("%d %d",&n,&m),n||m)
{
getchar();
for(i=0;i<n; ++i)
scanf("%s",map[i]);
for(i=0; i<n; ++i)
{
for(j=0; j<m;++j)
{
Time[i][j] = INF;
if(map[i][j]=='Y')
start.x=i,start.y=j,start.time=0;
if(map[i][j]=='T')
end.x=i,end.y=j;
}
}
printf("%d\n",BFS());
}
return 0;
}
nyoj 284 坦克大战 简单搜索的更多相关文章
- NYOJ 284 坦克大战 【BFS】+【优先队列】
坦克大战 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描写叙述 Many of us had played the game "Battle city" ...
- nyoj 284 坦克大战 (优先队列)
题目链接:http://acm.nyist.net/JudgeOnline/status.php?pid=284 特殊数据: 5 5 BBEEY EEERB SSERB SSERB SSETB 7 非 ...
- NYOJ 284 坦克大战 bfs + 优先队列
这类带权的边的图,直接广搜不行,要加上优先队列,这样得到的结果才是最优的,这样每次先找权值最小的,代码如下 #include <stdio.h> #include <iostream ...
- NYOJ 284 坦克大战 (广搜)
题目链接 描述 Many of us had played the game "Battle city" in our childhood, and some people (li ...
- java制作简单的坦克大战
坦克大战是我们小时候玩红白机时代的经典游戏,看到有不少小伙伴都使用各种语言实现了一下,手痒痒,也使用java做的一个比较简单的坦克大战,主要面向于学过Java的人群,与学了一段时间的人,有利于面向对象 ...
- 【blade04】用面向对象的方法写javascript坦克大战
前言 javascript与程序的语言比如C#或者java不一样,他并没有“类”的概念,虽然最新的ECMAScript提出了Class的概念,我们却没有怎么用 就单以C#与Java来说,要到真正理解面 ...
- FC 坦克大战 老巢铁墙
老巢外围铁墙E2A9:AC 80 EFEF80:A5 10 85 45 A5 45 AC D2 E2 用十六进制编辑器打开坦克大战的游戏文件搜索A5 45 F0 25 A5 0B改为AC 80 EF ...
- nyoj-----284坦克大战(带权值的图搜索)
坦克大战 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 Many of us had played the game "Battle city" ...
- javascript 面向对象制作坦克大战 (一)
PS:这个坦克大战是在网上下的一段源码之后,自己进行的重写. 写这个的目的是为了巩固自己这段时间对js的学习.整理到博客上,算是对自己近端时间学习js的一个整理. 同时也希望可以帮助到学习js的园 ...
随机推荐
- JS 模拟手机页面文件的下拉刷新
js 模拟手机页面文件的下拉刷新初探 老总说需要这个功能,好吧那就看看相关的东西呗 最后弄出了一个简单的下拉刷新页面的形式,还不算太复杂 查看 demo 要在仿真器下才能看到效果,比如chrome的里 ...
- zTree的使用
一.节点模糊搜索功能:搜索成功后,自动高亮显示并定位.展开搜索到的节点. 二.节点异步加载:1.点击展开时加载数据:2.选中节点时加载数据. 前台代码如下: <script type=" ...
- 安装、部署... Windows服务 .net程序 安装 命令
@echo offInstallutil.exe 程序目录 F:\test\TestWindows.exe 服务程序目录@sc start "服务名称"@sc config &qu ...
- 编程Bug集
(基础)将“/”用于取余符号,导致非预想结果——1小时后才找到错误原因 9.16
- C#实现判断字符是否为中文
C#实现判断字符是否为中文 (2012-08-14 14:25:28) 标签: gb2312 big5编码 gbk编码 判断 汉字 杂谈 分类: 技术 protected bool IsChinese ...
- POSTMAN and HTTPie to test APIs
http://blog.mashape.com/postman-httpie-test-apis/ We love working with APIs at Mashape, and we love ...
- shape和selector的结合
去掉gridview本身的点击效果:android:listSelector="@color/de_transparent": 添加两个selector,灰色的press和norm ...
- Android 手机卫士18--流量统计
//获取手机下载流量 //获取流量(R 手机(2G,3G,4G)下载流量) long mobileRxBytes = TrafficStats.getMobileRxBytes(); //获取手机的总 ...
- 使用自定义字体 @font-face 小试
第一次了解到@font-face是小伙伴给我展示的功能 感觉奇妙的不得了 @font-face 是CSS3中的一个模块 使用它你就可以将你自定义的web字体 去实现一些奇妙的想法 首先先介绍 ...
- 收集oracle统计信息
优化器统计范围: 表统计: --行数,块数,行平均长度:all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN:列统计: --列中唯一值的数量(NDV),NULL值的数量,数据分 ...