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 ... 
随机推荐
- nginx同一iP多域名配置方法
			文章转自:http://blog.itblood.com/nginx-same-ip-multi-domain-configuration.html 下面的是我本机的配置: server { list ... 
- vs2010 中无法打开 源文件 "stdafx.h"  未定义标识符 “xxx”
			解决方案: 项目属性->配置属性->C/C++->常规->附加包含目录->$(ProjectDir) 
- AngularJS 使用$sce控制代码安全检查
			由于浏览器都有同源加载策略,不能加载不同域下的文件.也不能使用不合要求的协议比如file进行访问. 在angularJs中为了避免安全漏洞,一些ng-src或者ng-include都会进行安全校验,因 ... 
- VTK初学一,c_Line_CellArray线段的CellArray绘制
			VTK窗口默认坐标方向: #ifndef INITIAL_OPENGL #define INITIAL_OPENGL #include <vtkAutoInit.h> VTK_MODULE ... 
- 繁华模拟赛day8 科技树
			/* 贪心,很明显是越容易升级的越先升级 */ #include<iostream> #include<cstdio> #include<string> #incl ... 
- 关于QT写注册表开机自启动
			注册表中权限: 1.HKEY_CURRENT_USER 2.HKEY_LOCAL_MACHINE 网上有很多帖子都是用的2,其实这样有违用户权限,而且如果不是管理员用户,会写入不成功! 代码如下: Q ... 
- HDOJ 1520 Anniversary party
			树形DP....在树上做DP....不应该是猴子干的事吗? Anniversary party Time Limit: 2000/1000 MS (Java/Others) Memory Li ... 
- 大数据之Ganglia
			1.什么是ganglia 一个开源集群监视项目:Ganglia可以做系统监控,但是,目前它不支持服务器异常或故障报警功能. 2.Ganglia监控集群架构 Ganglia 集群主要是由gmond.gm ... 
- DateEdit和TimeEdit用法
			DateEdit 控件默认情况下,显示的只有日期,没有时间.下面介绍2中日期和时间同时显示的方法: 1.Properties.VistaDisplayMode 为true, 2.Properties. ... 
- javaweb 解决将ajax返回的内容用document.write写入,FireFox一直加载的问题
			在document.write方法后加上document.close就解决了, 想知道原理的小伙伴可以继续看 浏览器在解析html时会打开一个流,这是用document.write中写入,是加入当解析 ... 
