代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB

题目描述

有一个 n×m的棋盘,在某个点 (x, y) 上有一个马,要求计算出马到达棋盘上任意一个点最少要走几步。
数据规模:对于全部的测试点,保证 1≤x≤n≤400,1≤y≤m≤400。

输入格式

输入一行四个整数,分别为 n, m, x, y。

输出格式

一个 n×m 的矩阵,表示马到达某个点最少要走几步(左对齐,宽 5 格,不能到达输出 −1)。

输入样例

3 3 1 1

输出样例

0 3 2
3 -1 1
2 1 4

个人思路

  1. 要求找到最少要走几步,所以用bfs判断那一层到达了那个位置,每一个进行移动时,移动后的位置就等于移动前的步数加一。
#include<bits/stdc++.h>
using namespace std;
struct s
{int a,b;
};
int main()
{int n,m,x,y;cin>>n>>m>>x>>y;int mm[n+10][m+10];memset(mm,-1,sizeof(mm));int ax[8]={-2,-2,-1,1,2,2,1,-1};int ay[8]={-1,1,2,2,1,-1,-2,-2};queue<s> q;s ss;ss.a=x;ss.b=y;q.push(ss);mm[x][y]=0;while(!q.empty()){for(int i=0;i<8;i++){s st;st.a=q.front().a+ax[i];st.b=q.front().b+ay[i];if(st.a>=1&&st.a<=n&&st.b>=1&&st.b<=m)//合理性判断{if(mm[st.a][st.b]<0){mm[st.a][st.b]=mm[q.front().a][q.front().b]+1;q.push(st);}}}q.pop();}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){printf("%-5d",mm[i][j]);//格式化输出}cout<<endl;}
}

马踏棋盘 (30 分)相关推荐

  1. java 马踏棋盘优化_我所知道的十大常用算法之马踏棋盘算法(深度搜索、贪心思想优化 )...

    前言需求 今天我们学习的是马踏棋盘算法,我们还是从一个场景里引入看看 马踏棋盘算法也被称为骑士周游问题 将马随机放在国际象棋的6×6棋盘Board0-5的某个方格中 提示:马按走棋规则(马走日字)进行 ...

  2. 剑指Offer_12_矩阵中的路径(参考问题:马踏棋盘)

    题目描述  请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩阵 ...

  3. 马踏棋盘问题的程序c语言,C语言马踏棋盘

    问题描述 国际象棋的棋盘为8×8的方格棋盘.现将"马"放在任意指定的方格中,按照"马"走棋的规则将"马"进行移动.要求每个方格只能进入一次, ...

  4. 马踏棋盘问题(C++版)

    递归求解(回溯法求解),列出所有的解: 主要注意对各种参数的定义不要弄混,细心表达各种变量,可以在棋盘中设置墙壁,便于debug的检查与分析,并确定各种方向(dx[8]={1,1,-1,-1,2,2, ...

  5. 马踏棋盘的问题——贪心算法

    [贪心算法] 其实马踏棋盘的问题很早就有人提出,且早在1823年,J.C.Warnsdorff就提出了一个有名的算法. 在每个结点对其子结点进行选取时,优先选择 '出口'最小的进行搜索,'出口'的意思 ...

  6. 单链表实现图书管理系统(销售系统,马踏棋盘)

    这篇文章主要介绍三个数据结构的课程设计,一共设涉及到三个课程设计,分别是图书管理系统,销售管理系统,马踏棋盘. 声明:图书管理系统为作者所写,其他两个来源于网络,如有侵权,请通知作者删除. 以下代码经 ...

  7. c语言马踏棋盘编程分析,C语言马踏棋盘实现

    原标题:C语言马踏棋盘实现 问题描述 国际象棋的棋盘为8×8的方格棋盘.现将"马"放在任意指定的方格中,按照"马"走棋的规则将"马"进行移动 ...

  8. 基于贪心算法的马踏棋盘哈密顿回路问题

    基于贪心算法的马踏棋盘哈密顿回路问题 Github 链接 问题分析 马踏棋盘其实相当于一个解空间的搜索问题,而遍历到每一个节点并要求最后可以回到起点本质上是一个哈密顿回路问题 目前大部分马踏棋盘的相关 ...

  9. 用java写的马踏棋盘算法

    用java写的马踏棋盘算法 将马随机放在国际象棋的8×8棋盘Board[0-7][0-7]的某个方格中,马按走棋规则进行移动.要求每个方格只进入一次,走遍棋盘上全部64个方格. 代码 /* 马踏棋盘问 ...

最新文章

  1. python学习路线-2020年 Python学习路线及学习目标规划 拿走不谢!
  2. WML元素及其语法格式一览表
  3. 18000 6c java_面向ISO18000-6C协议的无源超高频射频识别标签芯片设计
  4. 2_RabbitMQ工作模式_Work queues_Publish/Subscribe_Routing_Topics_HeaderRpc
  5. transformers Tokenizer
  6. 阿里云服务器 ECS 部署lamp:centos+apache+mysql+php安装配置方法 (centos7)
  7. hdu2534-Score
  8. 正确率、召回率和F值
  9. 特征值与特征向量及其应用
  10. RocketMQ(八)RocketMQ延时消息
  11. Openstack基础八大核心组件
  12. This scheduler instance is still active but was recovered by another instance in the cluster.
  13. Error running' xxxxxx': Command line is too long. Shorten command line for xxxxxxxxx
  14. 习题2_2、韩信点兵
  15. 督查督办管理系统适合什么企业
  16. JQery的lond方法加载内部页面,内部页面不加载Js
  17. 腾讯云轻量应用服务器月流量包用完超额了怎么计费?
  18. 如何制定客户留存策略_14个成功的客户留存策略举例
  19. 校园闲置物品(跳蚤市场)交易平台的设计与实现
  20. POJ 2676 Sudoku (数独求解器 DFS)

热门文章

  1. 争当 2% 的人——《智能时代 · 大数据与智能革命重新定义未来》读书笔记
  2. 数学 -- log
  3. OPPO和一点资讯牵手,手机厂商正式接管分发大权?
  4. 仿朋友圈相册图片选择以及画廊效果
  5. ShareSDK 微信及其朋友圈集成步骤
  6. 山水印|竹林野茶:喝茶,很少人会知道的事
  7. 深度学习与视频分析简介
  8. 基于c#开发的汉诺塔游戏
  9. 汉诺塔游戏《算法很美》
  10. 《Diffusion Curves: A Vector Representation for Smooth-Shaded Images》翻译