poj 3984
http://poj.org/problem?id=3984
题目很简单,就是简单的BFS吧,主要的难点在于坐标的问题
这个呢,可以反其道而行之,就是你从(1,1)到(5,5),你肯定走过一次
走过一次呢,那么路径肯定也标记过,那么你完全就可以从(5,5)到(1,1)按标记的记号走一次,那样就是最短的路径了
#include <stdio.h>
#include <iostream>
#include <queue>
#include <string.h> using namespace std; queue<int>first;
queue<int>second; int a[][],b[][],ans; struct {
int x,y;
}s[]; bool mark[][]; void bfs(int x,int y)
{
int he,ba;
first.push(x);
second.push(y);
while(!first.empty())
{
he=first.front();
first.pop();
ba=second.front();
second.pop();
//printf("%d %d\n",he,ba);
if(he==&&ba==) break;
if(a[he][ba+]==&&mark[he][ba+])
{
first.push(he);
second.push(ba+);
b[he][ba+]=b[he][ba]+;
mark[he][ba+]=false;
}
if(a[he+][ba]==&&mark[he+][ba])
{
first.push(he+);
second.push(ba);
b[he+][ba]=b[he][ba]+;
mark[he+][ba]=false;
}
}
} void findroad(int x,int y)
{
if(x==&&y==) return;
if(!mark[x][y-]){
ans--;
s[ans].x=x;
s[ans].y=y-;
findroad(x,y-);
}
if(!mark[x-][y])
{
ans--;
s[ans].x=x-;
s[ans].y=y;
findroad(x-,y);
}
} int main()
{
memset(a,,sizeof(a));
memset(mark,true,sizeof(mark));
memset(b,,sizeof(b));
for(int i=;i<=;i++)
for(int j=;j<=;j++)
scanf("%d",&a[i][j]);
s[].x=;
s[].y=;
bfs(,);
ans=b[][];
s[ans].x=;
s[ans].y=;
findroad(,);
for(int i=;i<=b[][];i++)
printf("(%d, %d)\n",s[i].x-,s[i].y-);
return ;
}
poj 3984的更多相关文章
- POJ 3984 迷宫问题
K - 迷宫问题 Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- POJ 3984(DFS入门题 +stack储存路径)
POJ 3984 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, ...
- BFS(最短路+路径打印) POJ 3984 迷宫问题
题目传送门 /* BFS:额,这题的数据范围太小了.但是重点是最短路的求法和输出路径的写法. dir数组记录是当前点的上一个点是从哪个方向过来的,搜索+,那么回溯- */ /************* ...
- Q - 迷宫问题 POJ - 3984(BFS / DFS + 记录路径)
Q - 迷宫问题 POJ - 3984 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, ...
- poj 3984 迷宫问题(dfs)
题目链接:http://poj.org/problem?id=3984 思路:经典型的DFS题目.搜索时注意剪枝:越界处理,不能访问处理. 代码: #include <iostream> ...
- POJ - 3984迷宫问题(最短路径输出)
题目链接:http://poj.org/problem?id=3984 题目: 迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submiss ...
- POJ 3984 - 迷宫问题 - [BFS水题]
题目链接:http://poj.org/problem?id=3984 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, ...
- [POJ 3984] 迷宫问题(BFS最短路径的记录和打印问题)
题目链接:http://poj.org/problem?id=3984 宽度优先搜索最短路径的记录和打印问题 #include<iostream> #include<queue> ...
- POJ 3984 迷宫问题 bfs 难度:0
http://poj.org/problem?id=3984 典型的迷宫问题,记录最快到达某个点的是哪个点即可 #include <cstdio> #include <cstring ...
随机推荐
- jQuery里$(this)和this的区别在哪?
$(this)是jquery对象,能调用jquery的方法,例如click(), keyup().而this,则是html元素对象,能调用元素属性,例如this.id,this.value.例如假设已 ...
- C++你不知道的那些事儿—C++语言的15个晦涩特性
这个列表收集了 C++ 语言的一些晦涩(Obscure)特性,是我经年累月研究这门语言的各个方面收集起来的.C++非常庞大,我总是能学到一些新知识.即使你对C++已了如指掌,也希望你能从列表中学到一些 ...
- [原] Android性能优化方法
GPU过度绘制 打开开发者选型,"调试GPU过度绘制",蓝.绿.粉红.红,过度绘制依次加深 粉红色尽量优化,界面尽量保持蓝绿颜色 红色肯定是有问题的,不能忍受 使用Hierarch ...
- [设计模式] javascript 之 策略模式
策略模式说明 定义: 封装一系列的算法,使得他们之间可以相互替换,本模式使用算法独立于使用它的客户的变化. 说明:策略模式,是一种组织算法的模式,核心不在于算法,而在于组织一系列的算法,并且如何去使用 ...
- 如何编译Apache Hadoop2.6.0源代码
如何编译Apache Hadoop2.6.0源代码 1.安装CentOS 我使用的是CentOS6.5,下载地址是http://mirror.neu.edu.cn/centos/6.5/isos/x8 ...
- Android Studio模拟器的问题及解决办法
1.could not bind gl_array_buffer error=0x502 环境:Windows10 解决办法: 在AVD Manager中,将模拟器的RAM设置为1G.
- jQuery中添加自定义或函数方法
<script type="text/javascript"> (function () { $.fn.parHy = function (val) { alert(v ...
- Android中使用SQLiteOpenHelper管理SD卡中的数据库
使用Android中自带的SQLiteOpenHelper可以完成数据库的创建与管理,但有两点局限: (1)数据库创建在内存卡中,大小受限,创建位置位于/data/data/应用程序名/databas ...
- 在spring容器中定义初始化和销毁bean前所做的操作,有三种方式
1.使用注解,通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 package com.luoq.test.annotation.init; ...
- Unity手游之路<七>角色控制器
Unity手游之路<七>角色控制器 我们要控制角色的移动,可以全部细节都由自己来实现.控制角色模型的移动,同时移动摄影机,改变视角.当然Unity也提供了一些组件,可以让我们做更少的工作, ...