资源限制

内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

问题描述

  一个8×8的棋盘上有一个马初始位置为(a,b),他想跳到(c,d),问是否可以?如果可以,最少要跳几步?

输入格式

  一行四个数字a,b,c,d。

输出格式

  如果跳不到,输出-1;否则输出最少跳到的步数。

样例输入

1 1 2 3

样例输出

1

数据规模和约定

  0<a,b,c,d≤8且都是整数。

问题分析:既然寻求最短路径,就该想到BFS算法,广度搜素,采用队列的特点进行同步搜索。

代码如下:

from collections import deque##二维列表模拟棋盘,外面两层1防止索引超出范围
l=[[1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1]
]
##八个方向
dirs=[lambda x,y:(x+1,y+2),lambda x,y:(x+1,y-2),lambda x,y:(x+2,y+1),lambda x,y:(x+2,y-1),lambda x,y:(x-1,y+2),lambda x,y:(x-1,y-2),lambda x,y:(x-2,y+1),lambda x,y:(x-2,y-1),
]
##计算步数
def counters(path):now_node=path[-1]real_path=[]while now_node[2] != -1:real_path.append(now_node[:2])now_node = path[now_node[2]]real_path.append(now_node[:2])real_path.reverse()return(len(real_path)-1)
##搜索
def qipan_find(x1,y1,x2,y2):queue=deque()##建立队列queue.append((x1+1,y1+1,-1))##保存坐标和源节点的位置path=[]#保存走过的节点while len(queue)>0:now_node = queue.popleft()###起点path.append(now_node)if now_node[0] == x2+1 and now_node[1] == y2+1:##走到终点print(counters(path))return Truefor dir in dirs:##沿着八个方向进行搜索next_node=dir(now_node[0],now_node[1])if l[next_node[0]][next_node[1]]==0:queue.append((next_node[0],next_node[1],len(path)-1))l[next_node[0]][next_node[1]] =2##标记已经搜索过else:l[now_node[0]][now_node[1]] = 2else:##找不到print('-1')return Falsea,b,c,d=list(map(int,input().split()))
qipan_find(a,b,c,d)

结果:

蓝桥杯 算法训练 跳马相关推荐

  1. 蓝桥杯-算法训练-跳马

    文章目录 前言 题目详情 解题代码 前言 类似八皇后的一道题目,可以用DFS 题目详情 解题代码 #include<iostream> using namespace std;const ...

  2. 蓝桥杯 算法训练 幸运的店家

    蓝桥杯 算法训练 幸运的店家 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 炫炫开了一家商店,卖的货只有一个,XXX,XXX卖N元钱.有趣的是,世界上只有面值为3的幂的纸 ...

  3. 蓝桥杯 算法训练 Beaver's Calculator

    蓝桥杯 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...

  4. 蓝桥杯 算法训练 印章

    蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数. 样例: 2 3 ...

  5. 蓝桥杯算法训练-24点(Python)

    问题描述 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加.减.乘.除以及括号想办法得到24, ...

  6. 蓝桥杯——算法训练——数字三角形

    蓝桥杯--算法训练--数字三角形 这道题不难,但是比较典型,可以作为动态规划(dp)的入门篇,属于线性dp(LIS,LCS和数字三角形都是此类题型). ------------------------ ...

  7. 蓝桥杯算法训练-强力党逗志芃

    持续更新蓝桥杯算法训练题解,有兴趣可以关注一波呀 题目 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前 ...

  8. 蓝桥杯 算法训练 逗志芃的危机

    蓝桥杯 算法训练 逗志芃的危机 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和 ...

  9. 蓝桥杯算法训练-过河马

    蓝桥杯算法训练题解有兴趣的可以支持下. 题目 问题描述 在那个过河卒逃过了马的控制以超级超级多的走法走到了终点之后,这匹马表示它不开心了-- 于是,终于有一天,它也过河了! 由于过河马积累了许多的怨念 ...

  10. 蓝桥杯——算法训练——进击的青蛙

    问题描述 青蛙X正准备跳过一座桥,这座桥被划分为N段,记青蛙所在的起始点为0,桥的末端为N.桥上的一些点有一些石子,这些点是无法跳上去的.青蛙每次跳跃能向前跳跃+1,+2,+3段,现在请你算出跳到末端 ...

最新文章

  1. NSTimer用法,暂停,继续,初始化
  2. my.cnf mysqld mysql_MySQL配置文件my.cnf详解【mysqld】模块(二)
  3. win7系统启动到一半停止_win7系统启动一半死机的解决方法
  4. 3、Excel各种类型数据的输入(数据类型、快速填充数据、修改数据)
  5. php 存储多选项_php高并发之opcache详解
  6. 有关volatile unsigned long一些说明
  7. Linux使用parted进行分区及拓展实验
  8. 置信学习:让样本中的“脏数据“原形毕露
  9. Linux下php-fpm进程过多导致内存耗尽问题解决
  10. [Swift]LeetCode248.对称数 III $ Strobogrammatic Number III
  11. open and openat
  12. [iOS开发]autolayout自动布局
  13. xss跨站攻击详讲 | 如何利用xss拿下一个站?
  14. Python爬取网易云音乐歌手歌曲和歌单!推荐好听的歌吗?
  15. 本地IIS启动后网页HTTP 错误 404.3 - Not Found解决方案
  16. 微信小程获取当前时期和时间
  17. ASO优化|标题、描述、关键词的最优策略
  18. 点击应用图标-应用(Activity)的启动流程
  19. python 散点图加趋势线
  20. 回溯算法(全排列、组合、N皇后问题)

热门文章

  1. 微信视频通话怎么美颜
  2. 标签类目体系(面向业务的数据资产设计方法论)-读书笔记3
  3. java判断是否是英文_Java 判断输入是否为英文字符
  4. Zotero 知网文章不能转成pdf 的解决办法。
  5. 力扣刷题 DAY_82 贪心
  6. 导轨式串口服务器作用,什么是485串口服务器?有什么功能与作用?
  7. LaTeX 旁注 边注 Marigin Note
  8. 2020-09-12
  9. ex is not shell_linux下环境变量详解
  10. c语言中结构体中默认值,C Struct中的缺省值