现在在一块空的场地上会有一个大的二维棋盘,裁判会给你指定初始位置及一座贝多芬雕像所处的位置,你开始时就站在裁判指定的初始位置处,你的目标是跳到贝多芬雕像的位置。为了给比赛增加一定的难度,你在棋盘上行走时,必须按照中国象棋中的马的走步方式来走。玩过中国象棋的人都知道,马走“日”,象走“田”。最后,你只需要告诉裁判最少多少步能到达贝多芬的雕像。如果根本就到不了贝多芬的雕像处,你直接告诉裁判就可以了。

玄影游侠站在棋盘的某一个位置,不知道该如何走,他知道你们都学过程序设计,所以想请你们帮帮忙编一个程序来帮助他找到想要到达贝多芬的雕像处所需要的最少的步数。

输入:

每组测试数据可能有多组输入,对于每一组输入,

输入的第一行包括一个整数N(1<=N<=100),代表棋盘的大小是N*N。

输入的第二行包括四个数start_x, start_y, end_x, end_y(1 <= start_x,start_y,end_x,end_y <= N),分别代表你开始时的位置的x坐标和y坐标以及贝多芬雕像的x坐标和y坐标。

输出:

如果你能够到达贝多芬雕像的位置,请输出最少需要多少步。

如果不能到达,则输出-1。

样例输入:
3
1 1 3 2
3
1 1 2 2
样例输出:
1
-1
用广度优先搜索即可
 #include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
using namespace std;
int n;
int sx,sy,ex,ey;
int dir[][] = {{,},{,},{,-},{,-},{-,-},{-,-},{-,},{-,}};
typedef pair<int ,int> P;
queue <P> que;
int step[][];
int ans; void bfs() {
while(!que.empty()) {
P tmp = que.front(); que.pop();
int cnt = step[tmp.first][tmp.second];
if(tmp.first == ex && tmp.second == ey) {
ans = cnt-;
break;
}
for(int i = ; i < ; i++) {
int x = dir[i][] + tmp.first;
int y = dir[i][] + tmp.second;
if(x >= && y >= && x <= n && y <= n && step[x][y] == ) {
que.push(P(x, y));
step[x][y] = cnt + ;
}
}
}
}
int main(int argc, char const *argv[])
{
//freopen("input.txt","r",stdin);
while(scanf("%d",&n) != EOF) {
scanf("%d %d %d %d",&sx,&sy,&ex,&ey);
memset(step, , sizeof(step));
P start = P(sx, sy);
step[sx][sy] = ; while(!que.empty()) {
que.pop();
}
que.push(start);
ans = -;
bfs();
printf("%d\n",ans);
}
return ;
}

最新文章

  1. Oracle补习班第十天
  2. GCC、Makefile编程学习
  3. 【Hibernate 5】继承映射配置及多态查询
  4. Windows Azure 虚拟网络配置(Point to Site)
  5. HDFS的Java客户端操作代码(HDFS的查看、创建)
  6. ORM之二:核心接口与扩展操作
  7. Angular ng-repeat
  8. Chapter 17. Objects and Inheritance(对象与继承)
  9. mysql 异常处理实例
  10. BZOJ 1049 数字序列
  11. 《windows程序设计》学习_1:初识windows程序
  12. POJ - 3061 Subsequence(连续子序列和&gt;=s的最短子序列长度)
  13. Java ClassLoader加载机制
  14. iOS-PYSearch 完美搜索页
  15. 【转】解决未能加载文件或程序集&#39;WebGrease‘的问题
  16. Github访问速度慢和下载慢的解决方法
  17. linux环境:创建数据库用户,表空间,启动数据库
  18. Tesseract_ocr 字符识别基础及训练字库、合并字库
  19. 【struts2】struts2的execAndWait拦截器使用
  20. Bugly最简单的配置方法

热门文章

  1. 如何清除SharePoint Server 配置缓存
  2. 在SAP C4C里触发SAP ERP的ATP check和Credit check
  3. Kafka 完全分布式集群环境搭建
  4. Nat Nanotechnol | 朱涛/陈春英等合作发现碳纳米管呼吸暴露后的延迟毒性导致小鼠原位乳腺肿瘤的多发性广泛转移
  5. VS code 豆沙绿护眼主题
  6. Bootstrap滚动监听(Scrollspy)插件
  7. Java微信公众号开发----关键字自动回复消息
  8. CF-1143D. The Beatles
  9. Tarjan算法 详解+心得
  10. HashMap与ArrayMap(和SparseArray)的比较与选择