题目描述

有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步

输入输出格式

输入格式:

一行四个数据,棋盘的大小和马的坐标

输出格式:

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

输入输出样例

输入样例#1: 复制

3 3 1 1

输出样例#1: 复制

0    3    2
3 -1 1
2 1 4

思路:这种题的话用宽搜和广搜都可以,我的思路是每次读取它周围的(能到达的八个方向),在边界内并且未到达过的点入队列,入队的继续读取,不过步数要加一。

#include<cstdio>
#include<queue>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=405;
int d[2][8]={{1,1,2,2,-1,-1,-2,-2},{2,-2,1,-1,2,-2,1,-1}};
int n,m,x,y;
int m1[405][405],mark[405][405];
struct node
{
int a,b;
};
void bfs(int t)
{
node f;
queue <node> q;
f.a=x,f.b=y;
q.push(f);
while(!q.empty())
{
node front =q.front();
q.pop();
for(int i=0;i<8;++i)
{
int dx=front.a+d[0][i];
int dy=front.b+d[1][i];
if(dx>0 && dx<=n && dy>0 && dy <=m && !mark[dx][dy])
{
mark[dx][dy]=1;
m1[dx][dy]=m1[front.a][front.b]+1;
node n1;
n1.a=dx,n1.b=dy;
q.push(n1);
} }
}
} int main()
{
scanf("%d%d%d%d",&n,&m,&x,&y);
memset(m1,-1,sizeof(m1));
m1[x][y]=0;
bfs(1);
m1[x][y]=0;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
printf("%-5d",m1[i][j]);
printf("\n");
}
//printf("%d\n",m1[1][1]);
return 0;
}

最新文章

  1. 数据库 基础篇3(mysql语法)
  2. [Lintcode two-sum]两数之和(python,双指针)
  3. Hibernate的常用关键类以及接口介绍
  4. [USACO10MAR]伟大的奶牛聚集
  5. ecmascript 的一些发展新动向
  6. 基于JQUERY写的 LISTBOX 选择器
  7. 02-UIKit控件、MVC
  8. 基于visual Studio2013解决面试题之0402合并升序链表并去重
  9. 用scikit-learn学习LDA主题模型
  10. 从CentOS安装完成到生成词云python学习日记
  11. 迁移学习︱艺术风格转化:Artistic style-transfer+ubuntu14.0+caffe(only CPU)
  12. C++对C语言register的增强
  13. iTOP-4418开发板所用核心板研发7寸/10.1寸安卓触控一体机
  14. 理解Session缓存
  15. MySQL存储过程 事务transaction
  16. Android 全局搜索条写成自定义控件-曹永思
  17. Visual Studio 2013 发布正式版及使用感受
  18. 【BZOJ-1913】signaling信号覆盖 极角排序 + 组合
  19. [javascript] Promise简单学习使用
  20. Django JSON 时间

热门文章

  1. OC第六课
  2. CF 447A(DZY Loves Hash-简单判重)
  3. Xcode 自己主动生成版本技术最佳实践
  4. #定位系统性能瓶颈# sysdig
  5. Catalan数(卡特兰数)
  6. FreeWheel基于Go的实践经验漫谈——GC是大坑(关键业务场景不用),web框架尚未统一,和c++性能相比难说
  7. Codeforces--630N--Forecast(方程求解)
  8. Makefile 文件怎么写
  9. [python 基础]python装饰器(一)添加functools获取原函数信息以及functools.partial分析
  10. django的admin后台管理如何更改为中文