跳马问题【华为OD机试JAVA&Python&C++&JS题解】

149 篇文章 322 订阅 ¥9.90 ¥99.00

一. 题目

输入 m 和 n 两个数,m 和 n 表示一个 m*n 的棋盘。输入棋盘内的数据。棋盘中存在数字和".“两种字符,如果是数字表示该位置是一匹马,如果是”."表示该位置为空的,棋盘内的数字表示为该马能走的最大步数。
例如棋盘内某个位置一个数字为 k,表示该马只能移动 1~k 步的距离。
棋盘内的马移动类似于中国象棋中的马移动,先在水平或者垂直方向上移动一格,然后再将其移动到对角线位置。
棋盘内的马可以移动到同一个位置,同一个位置可以有多匹马。

请问能否将棋盘上所有的马移动到同一个位置,若可以请输入移动的最小步数。若不可以输出 0。

输入描述
输入m 和 n 两个数,m 和 n 表示一个 m*n 的棋盘。输入棋盘内的数据。

输出描述
能否将棋盘上所有的马移动到同一个位置,若可以请输入移动的最小步数。若不可以输出 0。

示例1:
输入
3 2
. .
2 .
. .
输出
0
示例2:
输入
3 5
4 7 . 4 8
4 7 4 4 .
7 . . . .
输出
17

二.解题思路

这道题的解题思路如下:

  1. 解析输入:

    • 读取棋盘的尺寸(m, n)。
    • 读取棋盘数据,其中包括’.'和表示马最大移动步数的数字。
  2. 存储马的信息:

    • 提取并存储关于马的信息:它们的位置(坐标
  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值