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

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

输入:

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

输入的第一行包括一个整数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用广度优先搜索即可
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <queue>
 5 using namespace std;
 6 int n;
 7 int sx,sy,ex,ey;
 8 int dir[][2] = {{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1},{-2,1},{-1,2}};
 9 typedef pair<int ,int> P;
10 queue <P> que;
11 int step[102][102];
12 int ans;
13
14 void bfs() {
15     while(!que.empty()) {
16         P tmp = que.front(); que.pop();
17         int cnt = step[tmp.first][tmp.second];
18         if(tmp.first == ex && tmp.second == ey) {
19             ans = cnt-1;
20             break;
21         }
22         for(int i = 0; i < 8; i++) {
23             int x = dir[i][0] + tmp.first;
24             int y = dir[i][1] + tmp.second;
25             if(x >= 1 && y >= 1 && x <= n && y <= n && step[x][y] == 0) {
26                 que.push(P(x, y));
27                 step[x][y] = cnt + 1;
28             }
29         }
30     }
31 }
32 int main(int argc, char const *argv[])
33 {
34     //freopen("input.txt","r",stdin);
35     while(scanf("%d",&n) != EOF) {
36         scanf("%d %d %d %d",&sx,&sy,&ex,&ey);
37         memset(step, 0, sizeof(step));
38         P start = P(sx, sy);
39         step[sx][sy] = 1;
40
41         while(!que.empty()) {
42             que.pop();
43         }
44         que.push(start);
45         ans = -1;
46         bfs();
47         printf("%d\n",ans);
48     }
49     return 0;
50 }

转载于:https://www.cnblogs.com/jasonJie/p/5808248.html

九度oj 题目1365:贝多芬第九交响曲相关推荐

  1. 九度OJ 题目1179:阶乘

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1179:阶乘 * 来源:http://ac.jo ...

  2. 九度OJ 题目1069:查找学生信息 随笔

    ** 九度OJ 题目1069:查找学生信息 ** 题目描述如下: 输入N个学生的信息,然后进行查询. 输入 输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N个学生的信息,信息 ...

  3. 九度OJ 题目1203:IP地址

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1203:IP地址 * 来源:http://ac. ...

  4. 九度 1365 贝多芬第九交响曲

    http://ac.jobdu.com/problem.php?id=1365 基本BFS,好像一个月没写题了... 写完这题继续看linux源码去.一定要坚持 1 #include <stdi ...

  5. 九度OJ—题目1032:ZOJ

    题目描写叙述: 读入一个字符串.字符串中包括ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出.当某个字符用完时,剩下的仍然依照ZOJ的顺序输出. 输入: 题目包括多组用例,每组用例占一行,包括ZOJ ...

  6. 九度oj 题目1411:转圈

    题目描述: 在一个有向图有n个顶点(编号从1到n),给一个起点s,问从起点出发,至少经过一条边,回到起点的最短距离. 输入: 输入包括多组,每组输入第一行包括三个整数n,m,s(1<=n< ...

  7. 【WA】九度OJ题目1435:迷瘴

    题目描述: 通过悬崖的yifenfei,又面临着幽谷的考验-- 幽谷周围瘴气弥漫,静的可怕,隐约可见地上堆满了骷髅.由于此处长年不见天日,导致空气中布满了毒素,一旦吸入体内,便会全身溃烂而死. 幸好y ...

  8. 九度oj 题目1354:和为S的连续正数序列

    题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久, ...

  9. 九度oj 题目1376:最近零子序列

    题目描述: 给定一个整数序列,你会求最大子串和吗?几乎所有的数据结构与算法都会描述求最大子串和的算法.今天让大家来算算最近0子串和,即整数序列中最接近0的连续子串和.例如,整数序列6, -4, 5, ...

最新文章

  1. docker如何迁移数据目录
  2. Docker入门系列之二:使用dockerfile制作包含指定web应用的镜像
  3. php 序列化储存和转化 json_encode() json_decode($q,true)
  4. javap使用实例图解
  5. java鼠标经过时变色_鼠标经过时单元格变色
  6. 单点登录(SSO)—简介 1
  7. HTML标签类型及特点
  8. 前端学习(2682):重读vue电商网站3之登录页面总结el-form 组件问题
  9. tensorflow 保存训练loss_tensorflow2.0保存和加载模型 (tensorflow2.0官方教程翻译)
  10. Java并发编程实战_[Java并发编程实战] 简介
  11. matplotlib显示图中标签
  12. 阿里再度开源重磅技术!95% 程序员都需要了解
  13. MyBatis框架(6)动态sql
  14. 编译原理 编译器自动生成工具
  15. android 原笔迹,Android-原笔迹手写的探索与开发
  16. 5G China unicom 一般性异常处理
  17. Phaser帧动画没有效果
  18. 给软件添加鼠标右键快捷方式
  19. pyecharts制作地图显示的数据总是经纬度
  20. 如何开发一个酷炫的mdx

热门文章

  1. android apk安装工具,安卓装机必备工具!一键批量安装应用apk
  2. 电子病历模板编辑器_这几个邮件模板网站,帮助提升工作效率
  3. 一度智信电商是真的假的?
  4. focaltech(敦泰)触摸屏驱动Ft5306.c学习记录
  5. POI 2014 切题记
  6. 利用Python语言编程,完成猜数游戏,系统随机产生一个1到100的数字num1,用户输入一个数字guess,如果没有猜对,根据系统给出的提示重新猜数,直到才对为止。
  7. 一文搞懂CAN FD总线协议帧格式
  8. Android的自定义view的旋转圆形菜单实现
  9. maven dependency的作用英文解释(转载)
  10. C#:在一个窗体类中改变另一个窗体控件的属性