ny58 最小步数
最少步数
- 描述
 - 
这有一个迷宫,有0~8行和0~8列:
1,1,1,1,1,1,1,1,1
1,0,0,1,0,0,1,0,1
1,0,0,1,1,0,0,0,1
1,0,1,0,1,1,0,1,1
1,0,0,0,0,1,0,0,1
1,1,0,1,0,1,0,0,1
1,1,0,1,0,1,0,0,1
1,1,0,1,0,0,0,0,1
1,1,1,1,1,1,1,1,10表示道路,1表示墙。
现在输入一个道路的坐标作为起点,再如输入一个道路的坐标作为终点,问最少走几步才能从起点到达终点?
(注:一步是指从一坐标点走到其上下左右相邻坐标点,如:从(3,1)到(4,1)。)
- 输入
 - 第一行输入一个整数n(0<n<=100),表示有n组测试数据;
随后n行,每行有四个整数a,b,c,d(0<=a,b,c,d<=8)分别表示起点的行、列,终点的行、列。 - 输出
 - 输出最少走几步。
 - 样例输入
 - 
2
3 1 5 7
3 1 6 7 - 样例输出
 - 
12
11
代码一:写的复杂了#include<stdio.h>
#include<string.h>
#include<queue> using namespace std; #define N 9 int maze[N][N]={,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,};
int mazeH[N][N]; struct Node
{
int x,y,cnt; };
int dir[][]={{,},{,-},{,},{-,}};//定义方向 bool Judge(int x,int y)
{
return (x < N && x >= && y < N && y >= && !mazeH[x][y])?true:false;//如果没有超出边界,返回true,否者false } void MakeNode(int x,int y,int cnt,Node &node)
{
node.x=x;
node.y=y;
node.cnt=cnt;
mazeH[x][y]=;
} int bfs(int sX,int sY,int eX,int eY)
{
Node node,tempNode;
MakeNode(sX,sY,,node);
queue<Node> Q;
Q.push (node);
while( !Q.empty() )
{
node=Q.front();
Q.pop ();
if( node.x==eX && node.y==eY )//判断是否找到结束的那个点,如果找到了,将返回最小步数;
{
return node.cnt;
}
for(int i=;i<;++i)
{
if( Judge(node.x+dir[i][],node.y+dir[i][]) )
{
MakeNode(node.x+dir[i][],node.y+dir[i][],node.cnt+,tempNode);
Q.push (tempNode);
}
}
}
} int main()
{
int nCases;
scanf("%d",&nCases);
while( nCases-- )
{
int sX,sY,eX,eY;
scanf("%d%d%d%d",&sX,&sY,&eX,&eY);
memcpy(mazeH,maze,sizeof(maze));//把maze拷贝到mazeH中;
int ans=bfs(sX,sY,eX,eY);//bfs搜索
printf("%d\n",ans);
}
return ;
}代码二:这个简单点
#include<stdio.h>
#define min(x,y) x<y?x:y;
int map[][]={ ,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,, };
int x1,x2,y1,y2,m;
void dfs(int x,int y,int s)
{
if(map[x][y]) return ;
if(x==x2&&y==y2)
{
m=min(s,m);
return ;
}
s++;
map[x][y]=;
dfs(x+,y,s);
dfs(x-,y,s);
dfs(x,y+,s);
dfs(x,y-,s);
map[x][y]=;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
m=;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
dfs(x1,y1,);
printf("%d\n",m);
}
return ;
} 
 
ny58 最小步数的更多相关文章
- POJ 1753	Flip Game (高斯消元 枚举自由变元求最小步数)
		
题目链接 题意:4*4的黑白棋,求把棋全变白或者全变黑的最小步数. 分析:以前用状态压缩做过. 和上题差不多,唯一的不同是这个终态是黑棋或者白棋, 但是只需要把给的初态做不同的两次处理就行了. 感觉现 ...
 - yzoi2226最小步数的详细解法
		
Description - 问题描述 在各种棋中,棋子的走法总是一定的,如中国象棋中马走“日”.有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字. ...
 - One Person Game(扩展欧几里德求最小步数)
		
One Person Game Time Limit: 2 Seconds Memory Limit: 65536 KB There is an interesting and simple ...
 - Algorithm --> 棋盘中求出A到B的最小步数
		
求出A到B的最小步数 给定象棋盘,以及位置A和B, 求出从A到B的最小步数 代码: #include <cstdio> #include <iostream> #include ...
 - 1到n的最小步数
		
1到n的最小步数 Time Limit: 1 Sec Memory Limit: 128 MB 给你一个数n,让你求从1到n的最小步数是多少. 对于当前的数x有三种操作: 1: x+1 2: x ...
 - [leetcode]45. Jump Game II青蛙跳(跳到终点最小步数)
		
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
 - ZOJ 3593 One Person Game(拓展欧几里得求最小步数)
		
One Person Game Time Limit: 2 Seconds Memory Limit: 65536 KB There is an interesting and simple ...
 - 带你学习BFS最小步数模型
		
最小步数模型 一.简介 最小步数模型和最短路模型的区别? 最短路模型:某一个点到另一个点的最短距离(坐标与坐标之间) 最小步数模型:不再是点(坐标),而是状态到另一个状态的转变 BFS难点所在(最短路 ...
 - yzoi1109&&viojs1042最小步数的一点看法——回文数
		
Description - 问题描述 有一天,雄霸传授本人风神腿法第一式:捕风捉影..............的步法(弟子一:堂主,你大喘气呀.风:你给我闭嘴.)捕风捉影的关键是换气(换不好就会大喘气 ...
 
随机推荐
- android 使用AsyncHttpClient框架上传文件以及使用HttpURLConnection下载文件
			
AsyncHttpClient开源框架android-async-http还是非常方便的. AsyncHttpClient该类通经常使用在android应用程序中创建异步GET, POST, PUT和 ...
 - pcapng文件的python解析实例以及抓包补遗
			
为了弥补pcap文件的缺陷,让抓包文件可以容纳更多的信息,pcapng格式应运而生.关于它的介绍详见<PCAP Next Generation Dump File Format> 当前的w ...
 - java 如何查看jdk版本&位数
			
java 如何查看jdk版本&位数 CreateTime--2018年4月22日18:20:18 Author:Marydon 方式一:通过dos命令实现 win+R-->cmd-- ...
 - 按部就班——图解配置IIS5的SSL安全访问(转)
			
作者:mikespook 版本:1.0 最后更新:2004-12-22 16:04 按部就班——图解配置IIS5的SSL安全访问... 1 写在前面的... 1 第一步: 准备工作... ...
 - 全球免费知名DNS服务器
			
全球免费知名DNS服务器 jalone 2013-06-18 14:25:46 最近老是发表DNS相关文章,今天继续说DNS,国内75%以上的家用宽带路由器存在严重的安全隐患:用户浏览网页的时候其DN ...
 - 小程序四:视图之WXSS
			
WXSS(WeiXin Style Sheets)是MINA设计的一套样式语言,用于描述WXML的组件样式. WXSS用来决定WXML的组件应该怎么显示. 为了适应广大的前端开发者,我们的WXSS具有 ...
 - pdo,更高的sql安全性
			
介绍 PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口.实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能. 注意利用 PDO 扩展自身并不能实现 ...
 - mysql数据库的数据类型及约束
			
本文转自:http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html 1.整型 MySQL数据类型 含义(有符号) tinyint( ...
 - 调试解决iOS内存泄漏
			
这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存泄露,以及NSZombieEnabled设置的使用. 本文假设你已经比较熟悉Obj-C的内存管理机制. 实验的开发环境:X ...
 - windows添加开机启动项
			
http://www.cnblogs.com/jokey/archive/2010/06/17/1759370.html添加开机启动项(通过注册表) 例子:增加QQ开机启动项 第一步:找到注册表的启动 ...