洛谷1443 马的遍历
来源:互联网 发布:工程结算软件 编辑:程序博客网 时间:2024/06/09 18:07
题目描述
有一个n*m的棋盘(n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步
输入输出格式
输入格式:
一行四个数据,棋盘的大小和马的坐标
输出格式:
一个n*m的矩阵,代表马到达某个点最少要走几步(左对齐,宽5格,不能到达则输出-1)
宽搜,有个小技巧,直接用头指针对应的步数加1,(源代码14行的位置)
#include<bits/stdc++.h>int n,m,sx,sy,a[1000005][3],c[405][405],cnt;int x[8]={1,2,-1,-2,-1,-2,1,2},y[8]={2,1,2,1,-2,-1,-2,-1};void bfs(int i,int j){ int head=1,foot=2; a[2][1]=i,a[2][2]=j,c[i][j]=head; while(head<foot){ head++; for(int q=0;q<=7;q++){ int xx=a[head][1]+x[q]; int yy=a[head][2]+y[q]; if(!c[xx][yy] && xx>=1 && xx<=n && yy>=1 && yy<=m){ foot++; c[xx][yy]=c[a[head][1]][a[head][2]]+1; a[foot][1]=xx; a[foot][2]=yy; } } }}int main(){ scanf("%d%d%d%d",&n,&m,&sx,&sy); bfs(sx,sy); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(c[i][j]) printf("%-5d",c[i][j]-1); else printf("-1 "); } printf("\n"); }}
阅读全文
1 0
- 洛谷1443 马的遍历
- 洛谷 马的遍历
- 洛谷 1443_马的遍历_bfs
- 洛谷P1443 马的遍历
- 洛谷 P1443 马的遍历
- 洛谷 P1443 马的遍历
- 洛谷 P1443 马的遍历
- 洛谷 P1443 马的遍历
- 洛谷 P1443 马的遍历
- 洛谷p1443 马的遍历
- 图的遍历算法-马遍历棋盘
- 图的遍历算法-马遍历棋盘
- 【搜索】洛谷 P1443 马的遍历
- 马的遍历问题
- 马的遍历
- 马的遍历问题
- 马的遍历
- 马的遍历
- GIS地图学习笔记一之基础概念《未完待续》
- c#.net GridView System.ArgumentOutOfRangeException
- 基于opencv的Morevec算子特征提取(数字摄影测量)
- 【转载】重新认识xpath定位
- “自顶向下,逐步求精”的概念和应用
- 洛谷1443 马的遍历
- 专注师生需求 联想用心服务教育事业
- 静态库与动态库
- PHP include,require,header 语法结构
- 那些年,调试android 8.0指纹遇到的坑
- Spring整合MyBatis (使用扫描包配置mapper代理)
- 如何防止身份证复印件被盗用
- composer 教程01
- Jquery总结