NYOJ 迷宫寻宝(一)
# include<iostream>
# include<string>
# include<string.h>
# include<queue>
# include<stdio.h>
# include<math.h>
#include <algorithm>
using namespace std;
char d[][];
int a[],b[];
struct Node
{
int x,y;
int num;
}node,temp,f[];
queue<Node> q,q1;
void bfs(int x,int y,int m,int n)
{
int k;
node.x = x;
node.y = y;
q.push(node);
d[x][y] = '';
while(!q.empty())
{
temp = q.front();
q.pop();
for(int i=;i<;i++)
{
int t1,t2;
t1 = temp.x + f[i].x;
t2 = temp.y + f[i].y;
if(t1< ||t1>=m || t2< || t2>=n)
continue;
if(d[t1][t2] == 'G')
{
printf("YES\n");
return;
}
else if(d[t1][t2] == '' || d[t1][t2] == 'X')
{
continue;
}
else if(d[t1][t2] == 'A' || d[t1][t2] == 'B' || d[t1][t2] == 'C' || d[t1][t2] == 'D' || d[t1][t2] == 'E')
{
k = d[t1][t2] - 'A';
if(b[k]>=a[k] && a[k]!=)
{
d[t1][t2] = '';
node.x = t1;
node.y = t2;
q.push(node);
}
else
{
node.x = t1;
node.y = t2;
node.num = k;
q1.push(node);
}
}
else if(d[t1][t2] == '.' || d[t1][t2] == 'a' || d[t1][t2] == 'b' || d[t1][t2] == 'c' || d[t1][t2] == 'd' || d[t1][t2] == 'e')
{ if(d[t1][t2]!='.')
{
k = d[t1][t2] - 'a';
b[k]++;
}
d[t1][t2] = '';
node.x = t1;
node.y = t2;
q.push(node);
} } if(q.empty()==true && q1.empty()!=true)
{
k = q1.size();
for(int i=;i<k;i++)
{
temp = q1.front();
q1.pop();
if(b[temp.num]>=a[temp.num] && a[temp.num]!=)
{
q.push(temp);
d[temp.x][temp.y] = '';
}
else
{
q1.push(temp);
}
}
} }
//要清空q1
while(!q1.empty())
{
q1.pop();
}
printf("NO\n");
}
int main()
{
int n,m,i,j,x,y;
f[].x=;f[].y=;
f[].x=;f[].y=-;
f[].x=;f[].y=;
f[].x=-;f[].y=;
scanf("%d %d",&m,&n);
getchar();
while(n!= || m!=)
{
for(i=;i<;i++)
{
a[i] = ;
b[i] = ;
} //要重置d数组
for(i=;i<;i++)
for(j=;j<;j++)
d[i][j]='';
for(i=;i<m;i++)
{
for(j=;j<n;j++)
{
scanf("%c",&d[i][j]);
if(d[i][j]=='S')
{
x = i;
y = j;
}
if(d[i][j]=='a') a[]++;
else if(d[i][j]=='b') a[]++;
else if(d[i][j]=='c') a[]++;
else if(d[i][j]=='d') a[]++;
else if(d[i][j]=='e') a[]++;
}
getchar();
} bfs(x,y,m,n); /*
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%c",d[i][j]);
}
printf("\n");
}
*/
scanf("%d %d",&m,&n); //WA原因 少了这句话
getchar();
}
return ;
}
NYOJ 迷宫寻宝(一)的更多相关文章
- nyoj 82 迷宫寻宝(一)
点击打开链接 迷宫寻宝(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫 ...
- Unity3D实现立体迷宫寻宝
Unity3D实现立体迷宫寻宝 这个小游戏是一个白痴在一个昏暗的房间走动找到关键得分点,然后通关游戏.入门Unity3D做的第一款游戏,比较无聊,但实现了一般的游戏功能.如,人物控制,碰撞检测,主控制 ...
- 迷宫寻宝(一)(bfs)
迷宫寻宝(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编 ...
- Problem 2285 迷宫寻宝 (BFS)
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2285 Problem 2285 迷宫寻宝 Accept: 323 Submit: 1247Time Li ...
- 福州大学第十五届程序设计竞赛_重现赛B题迷宫寻宝
Problem B 迷宫寻宝 Accept: 52 Submit: 183Time Limit: 1000 mSec Memory Limit : 32768 KB Problem De ...
- NYOJ82 迷宫寻宝(一)【BFS】
迷宫寻宝(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 一个叫ACM的寻宝者找到了一个藏宝图.它依据藏宝图找到了一个迷宫,这是一个非常特别的迷宫,迷宫里有N个 ...
- nyoj 82 迷宫寻宝(二)
http://acm.nyist.net/JudgeOnline/problem.php?pid=83 题目解法主要在于判断两线段是否相交,思路是穷举所有地图四周的点,其中每一个边界上的点和终点构成一 ...
- nyoj 83:迷宫寻宝(二)(计算几何)
题目链接 枚举所有墙的2n个端点与宝物的位置作为一条线段(墙的端点必定与边界重合), 求出与之相交的最少线段数(判断线段相交时用跨立实验的方法),+1即为结果. #include<bits/st ...
- Problem 2285 迷宫寻宝
http://acm.fzu.edu.cn/problem.php?pid=2285 Problem Description 洪尼玛今天准备去寻宝,在一个n*n (n行, n列)的迷宫中,存在着一个入 ...
随机推荐
- 怎样利用Heartbeat与Floating IP在Ubuntu 14.04上创建高可用性设置
提供 ZStack社区 内容简单介绍 Heartbeat是一款开源程序,负责将集群基础设施容量--包括集群成员与消息收发--交付至客户server. Hearbeat在高可用性server基础设施其中 ...
- Mac 安装HomeBrew 出错
错误如下: error: could not lock config file /usr/local/Homebrew/.git/config: Permission denied fatal: co ...
- 【CF526F】Pudding Monsters cdq分治
[CF526F]Pudding Monsters 题意:给你一个排列$p_i$,问你有对少个区间的值域段是连续的. $n\le 3\times 10^5$ 题解:bzoj3745 Norma 的弱化版 ...
- javaweb学习之建立简单网站
看到很多网站,论坛等,很实用,想做一个,比如中国图书网,它们的共同特点是运行在浏览器中. 最简单可行的技术就是jsp实现,但是jsp虽然可以在服务器端显示,在客户端连接数据库,且客户端和服务器端要完成 ...
- MySQL多实例部署与优化
MySQL安装 ##上传MySQL安装包## mkdir /home/oldboy/tools -p cd /home/oldboy/tools/ ###wget -q http://mirrors. ...
- 连接mysql 数据库时出现2003 -can't connect to mysql server on 'localhost'(100038)的问题
通过eclipse连接数据库是出现了以下问题 可能是由于数据库未开启造成的,你需要手动开启数据库. 手动开启数据库的方法: 1 win+r键后,在cmd中输入services.msc,点击确定 点击左 ...
- <a>标签中的href如何调用js代码
在HTML中,<a>标签的href属性用于指定超链接的目标的URL.在所有浏览器中,链接的默认外观是: 未被访问的链接带有下划线而且是蓝色的 已被访问的链接带有下划线而且是紫色的 活动链接 ...
- hdu2594 Simpsons' Hidden Talents【next数组应用】
Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- 浅析vue的双向数据绑定
vue 的双向数据绑定是基于es5的 object对象的defineProperty属性,重写data的set和get函数来实现的.1.defineProperty 数据展示 Object.defin ...
- [No0000102]JavaScript-基础课程2
var bob = new Object(); bob.age = ; // 这一次我们已经添加了一个方法,setAge bob.setAge = function (newAge){ bob.age ...