求出A到B的最小步数

给定象棋盘,以及位置A和B, 求出从A到B的最小步数

Input
2             -->case 个数
9 9          -->棋盘大小
3 5 2 8    --> 起始位置
20 20
2 3 7 9

Output

代码:

#include <cstdio>
#include <iostream>
#include <string.h> using namespace std;
#define MAX 1000 //八个方向
int o[][] = { { , }, { , - }, { -, }, { -, - }, { -, - }, { -, }, { , - }, { , } }; int R, C;
int _sX, _sY, _eX, _eY; //起始坐标
int graph[MAX][MAX];
int Answer; void DFS( int sX, int sY, int cnt )
{
if( sX < || sX > R || sY < || sY > C )
{
return;
} if( sX == _eX && sY == _eY )
{
if( Answer > cnt ) //求取最小步数 Answer
{
Answer = cnt;
}
} if( graph[sX][sY] == || graph[sX][sY] > cnt ) //当前格子没走或者值比cnt大,取较小值
{
graph[sX][sY] = cnt;
for( int i = ; i < ; i++ )
{
DFS( sX + o[i][], sY + o[i][], cnt + );
}
}
} int main( int argc, char** argv )
{
int tc, T; freopen( "input_chess.txt", "r", stdin ); cin >> T;
for( tc = ; tc < T; tc++ )
{
memset( graph, , sizeof( graph ) ); cin >> R >> C;
cin >> _sX >> _sY >> _eX >> _eY; graph[_sX][_sY] = ; Answer = MAX; DFS( _sX, _sY, ); cout << Answer << endl;
} return ;
}

输入文件:


Algorithm --> 棋盘中求出A到B的最小步数的更多相关文章

  1. iOS中求出label中文字的行数和每一行的内容

    今天遇到一个需求,需要计算label中文字的行数.想了好久也没想到好的解决方法,就在网上找了下.结果发现一篇文章是讲这个的.这部分代码不但能够求出一个label中文字行数,更厉害的是能够求出每一行的内 ...

  2. 2d游戏中求出一个向量的两个垂直向量

    function cc.exports.VerticalVector(vec)--求出两个垂直向量 local result = {} result[1] = cc.p(vec.y/vec.x,-1) ...

  3. 通过日期在js中求出判断间隔天数,周期等实现分享

    在我们在项目的时候,可能出现这样的一种情况,有一个开始时间和一个结束时间,而这两个时间用$('#StartTime').val(); 取出来的时候又是datetime 类型,我们需要求这个时间中的间隔 ...

  4. 海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)

    前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小堆比较好一些. 先拿10000个数建堆, ...

  5. 海量数据中找出前k大数(topk问题)

    海量数据中找出前k大数(topk问题) 前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小 ...

  6. hdu 1595 find the longest of the shortest【最短路枚举删边求删除每条边后的最短路,并从这些最短路中找出最长的那条】

    find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  7. 防御性编程习惯:求出链表中倒数第 m 个结点的值及其思想的总结

    防御性编程习惯 程序员在编写代码的时候,预料有可能出现问题的地方或者点,然后为这些隐患提前制定预防方案或者措施,比如数据库发生异常之后的回滚,打开某些资源之前,判断图片是否存在,网络断开之后的重连次数 ...

  8. 一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。

    主要掌握String中的方法 char[] toCharArray()           将此字符串转换为一个新的字符数组. int indexOf(String str)           返回 ...

  9. 【C语言】输入一组整数,求出这组数字子序列和中最大值

    //输入一组整数.求出这组数字子序列和中最大值 #include <stdio.h> int MAxSum(int arr[],int len) { int maxsum = 0; int ...

随机推荐

  1. java注解之二

    从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相应的处理.通过使用Annotation,开发人员可 ...

  2. mpeg文件格式分析

    MPEG-1流比特层次结构分析总结 1.简要介绍Mpeg 2.Mpeg-1数据流分析 2.1视频序列层(VideoStream) 2.2画面组层(GOP) 2.3画面层(Pictures) 2.4片层 ...

  3. Caused by: java.lang.ClassNotFoundException: ognl.PropertyAccessor

    1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...

  4. 安装使用pyclone进行克隆演化推断

    pyclone介绍   可以根据多个样品突变的allele frequency 和 copy number,推断出有该突变的细胞克隆所占的比例(cellular prevalence)在不同样品间的变 ...

  5. 异常-----freemarker.template.TemplateException: The only legal comparisons are between two numbers, two strings, or two dates

    1.错误描述 六月 26, 2014 10:44:49 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...

  6. CodeForces 940E

    题意略. 这个题目我开始题意理解得有点问题.本题的实质是在这个数列中选择一些数字,使得选出的这些数字之和最大,用dp来解. 我们先要明确:当我选择数列长度为2 * c时,不如把这个长度为2 * c的劈 ...

  7. JDK 9.0.4安装过程

    因为种种问题,怀疑是因为JDK版本不对劲,于是打算将JDK重新搞一下. 不看不知道,看了吓一跳,我的笔记本里现在起码有5.6甚至更多个JDK,JRE,并且由于年久失修,我也不知道这些东西怎么装上去的, ...

  8. 原根求解算法 && NTT算法

    原根求解算法: 获取一个数\(N\)的原根\(root\)的算法 #include<bits/stdc++.h> #define ll long long #define IL inlin ...

  9. vue 父组件与子组件的通信

    参考博客地址:http://www.cnblogs.com/okaychen/p/7674211.html,很详细!

  10. app图标icon大全

    http://tool.58pic.com/tubiaobao/index.php?m=Index&a=ui&p=2 很有用,下载没用,直接右键吧.