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 ...
随机推荐
- php/js互传cookie中文乱码的问题
问题发现: 过去好好的,今天突然网页出现了问题. 在猎豹和IE都出现问题,在360浏览器就正常. 经过排错,最终发现: js存储cookie,php读取的时候成了乱码 . 问题分析: 这是因为文字编 ...
- 新浪微博客户端(47)-在TextView中插入表情
DJEmotionPageView.m // 发送点击广播(和android类似,区别在于android的广播是只要有上下文对象context,就可以发送) // iOS中的通知发送和接收都是通过NS ...
- oracle中substr与instr
在oracle中,可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符.在一个字符串中查找指定的字符,返回被查找到的指定字符的位置. 语法: Instr(sourceString,de ...
- 也谈Promise
最新的ES6标准添加有Promise方法,但自己在项目中一直使用jQuery(jQuery自己实现了不标准的Promise),加上es6标准还没有得到普及,也就懒得学习相关资料. 最近手头上的活少了, ...
- .Net Core 之 图形验证码
本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能. 通过测试的系统: Windows 8.1 64bit Ubuntu Server 16.04 LTS 64 ...
- 网络安全&信息安全&系统安全常用名词汇总
拖库(脱裤) 隐写术 拖库(脱裤) 隐写术 拖库(脱裤) 隐写术 拖库(脱裤) 隐写术
- go语言mongdb管道使用
原始json: { "listsn": "", "code": "fwq_add", "detail" ...
- C#4.0 特性
动态绑定 命名和可选参数 泛型的协变和逆变 互操作性 动态支持 Office 可编程性 类型等效性支持 协变和逆变 当类型为dynamic的视图模型遭遇匿名对象 https://msdn.micros ...
- R语言 常见模型
转自 雪晴网 [R]如何确定最适合数据集的机器学习算法 抽查(Spot checking)机器学习算法是指如何找出最适合于给定数据集的算法模型.本文中我将介绍八个常用于抽查的机器学习算法,文中还包括各 ...
- Redis安装和使用
新年伊始,万象更新.祝大家:新的一年,工作顺利,生活越来越美好. http://www.redis.cn/commands.html http://try.redis.io/ http://www.c ...