A - 迷宫问题
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Description
int maze[5][5] = {
0, 1, 0, 0, 0,
0, 1, 0, 1, 0,
0, 0, 0, 0, 0,
0, 1, 1, 1, 0,
0, 0, 0, 1, 0,
};
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
Input
Output
Sample Input
0 1 0 0 0
0 1 0 1 0
0 0 0 0 0
0 1 1 1 0
0 0 0 1 0
Sample Output
(0, 0)
(1, 0)
(2, 0)
(2, 1)
(2, 2)
(2, 3)
(2, 4)
(3, 4)
(4, 4)
#include<cstdio>
#include<string.h>
using namespace std;
int maze[][];
int q[];
int dx[]={-,,,};
int dy[]={,,-,};
int vis[][];
int fa[][],dist[][],dir[][];
int dirt[];
int zuobiao[];
void bfs(int x,int y)//(x,y)是起点
{
int front=,rear=,d,u;
u=*x+y;
vis[x][y]=;fa[x][y]=u;dist[x][y]=;
q[rear++]=u;
while(front<rear)
{
u=q[front++];
x=u/;y=u%;
if(x==&&y==) break;
for(d=;d<;d++)
{
int nx=x+dx[d],ny=y+dy[d];
if(nx>=&&nx<&&ny>=&&ny<&&!maze[nx][ny]&&!vis[nx][ny])
{
int v=nx*+ny;
q[rear++]=v;
vis[nx][ny]=;
fa[nx][ny]=u;
dist[nx][ny]=dist[x][y]+;
dir[nx][ny]=d;
}
}
}
} void print_path(int x,int y)
{
int c=;
for(;;)
{
int fx=fa[x][y]/;
int fy=fa[x][y]%;
if(fx==x&&fy==y) break;
dirt[c++]=dir[x][y];
zuobiao[c-]=fa[x][y];
x=fx;
y=fy;
}
printf("(0, 0)\n");
while(c--)
printf("(%d, %d)\n",zuobiao[c]/+dx[dirt[c]],zuobiao[c]%+dy[dirt[c]]);
} int main()
{
int i,j;
for(i=;i<;i++)
for(j=;j<;j++)
{
scanf("%d",&maze[i][j]);
}
bfs(,);
print_path(,);
return ;
}
A - 迷宫问题的更多相关文章
- C语言动态走迷宫
曾经用C语言做过的动态走迷宫程序,先分享代码如下: 代码如下: //头文件 #include<stdio.h> #include<windows.h>//Sleep(500)函 ...
- POJ 2251 Dungeon Master(3D迷宫 bfs)
传送门 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28416 Accepted: 11 ...
- BFS_Maze_求解迷宫最短路径
/* 10 10 #.######.# ......#..# .#.##.##.# .#........ ##.##.#### ....#....# .#######.# ....#..... .## ...
- 【刷题笔记】I'm stuck! (迷宫)-----java方案
题目描述 : 给定一个R行C列的地图,地图的每一个方格可能是'#', '+', '-', '|', '.', 'S', 'T'七个字符中的一个,分别表示如下意思: '#': 任何时候玩家都不能移动到此 ...
- canvas实例 ---- 制作简易迷宫(一)
这个系列分为两部分,第一部分为迷宫的生成及操作,第二部分为自动寻路算法. 我们先看效果: See the Pen QGKBjm by fanyipin (@fanyipin) on CodePen. ...
- HTML 迷宫
今天补个遗,将很久以前研究 HTML5 的时候写的生成迷宫.迷宫寻路程序整理出来. 下载链接在文章最后. 简介 为什么要做这个 HTML5 迷宫程序?因为我喜欢.我愿意.也是向老程序员学习(见第5节) ...
- 洛谷P1605 迷宫——S.B.S.
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- Java迷宫游戏
缘起: 去年(大三上学期)比较喜欢写小游戏,于是想试着写个迷宫试一下. 程序效果: 按下空格显示路径: 思考过程: 迷宫由一个一个格子组成,要求从入口到出口只有一条路径. 想了一下各种数据结构,似乎树 ...
- K - 迷宫问题
/*定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, ...
- Dijkstra算法初步 - 迷宫问题
你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数.还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间.游戏规定了 ...
随机推荐
- Sql语句复习
1.两张表A,B 其中A表中字段1,字段2,字段3要迁移到B表中字段4,字段5,字段6,迁移后B表的字段7 全赋值为123: insert into B(字段4,字段5,字段6,字段7) select ...
- 前端面试题之Html和CSS
又到了毕业季,很多小伙伴们都到了找工作的时候了,好多小伙伴问我有前端的面试题么?答:没有. 呃呃… … 小伙伴本宝宝真的没有骗你们,我从毕业到现在一直在一家公司没有换过,所以手里压根没有面试题.我们公 ...
- Linux 设备驱动程序 字符设备
已经无法再精简,适合入门. #include<linux/module.h> #include<linux/init.h> #include<asm/uaccess.h& ...
- 【转】valueof()用法
valueOf()用来返回对象的原始类型的值. 语法 booleanObject.valueOf() 代码:<script> var a = new String("valueO ...
- Eclipse 显示所有文件
Package Explorer -> View Menu -> Filters -> uncheck .* resources http://stackoverflow.com/q ...
- ROS语音交互(四)接入图灵语义理解
首先程序中会用到Json,curl 安装相应的库 $ sudo apt-get install libcurl3 libcurl4-openssl-dev$ sudo apt-get install ...
- APIJSON,让接口见鬼去吧!
我: APIJSON,让接口见鬼去吧! https://github.com/TommyLemon/APIJSON 服务端: 什么鬼? 客户端: APIJSON是啥? 我: APIJSON是一种JSO ...
- arrayLen
var i;for (i = categoryList.length - 1; i >= 0; i -= 1) { var categoryValue=categoryList[i]; if ( ...
- 检索 COM 类工厂中 CLSID 为 {820280E0-8ADA-4582-A1D9-960A83CE8BB5} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。
检索 COM 类工厂中 CLSID 为 {820280E0-8ADA-4582-A1D9-960A83CE8BB5} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRE ...
- 常见JDBC连接数据库字符串
1.Mysql 驱动类:com.mysql.jdbc.Driver 连接字符串:jdbc:mysql://localhost:3306/dbname 2.Oracle 驱动类:oracle.jdbc. ...