洛谷p1443 马的遍历
来源:互联网 发布:百姓自动发帖软件 编辑:程序博客网 时间:2024/05/29 19:41
BFS 就是移动方式改了一下 和走迷宫一样
还能更优的应该
题目描述有一个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<bits/stdc++.h>using namespace std;struct point{ int x,y,s;};int vis[401][401]={0},a[401][401]={0};queue<point> q;int n,m;int main(){ int sx,sy; scanf("%d%d%d%d",&n,&m,&sx,&sy); int next[8][2]={{-2,-1},{-1,-2}, {-2,1},{-1,2}, {2,1},{1,2}, {2,-1},{1,-2} }; point t; t.x=sx,t.y=sy; a[sx][sy]=0; vis[sx][sy]=1; q.push(t); while(!q.empty()){ point u=q.front();q.pop(); point tp; for(int i=0;i<8;i++) { tp.x=u.x+next[i][0],tp.y=u.y+next[i][1]; tp.s=a[u.x][u.y]+1; if(tp.x<1||tp.x>n||tp.y<1||tp.y>m) continue; if(!vis[tp.x][tp.y]) //如果未访问过 { a[tp.x][tp.y]=tp.s; vis[tp.x][tp.y]=1; q.push(tp); } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++) { if(vis[i][j])printf("%-5d",a[i][j]); else printf("%-5d",-1); } printf("\n"); } return 0;}
阅读全文
0 0
- 洛谷P1443 马的遍历
- 洛谷 P1443 马的遍历
- 洛谷 P1443 马的遍历
- 洛谷 P1443 马的遍历
- 洛谷 P1443 马的遍历
- 洛谷 P1443 马的遍历
- 洛谷p1443 马的遍历
- P1443 马的遍历
- P1443 马的遍历
- P1443 马的遍历
- 【搜索】洛谷 P1443 马的遍历
- [LUOGU]P1443 马的遍历
- 【p1443-马的遍历】解题记录
- luogu P1443 马的遍历 【队列 dfs】
- 洛谷 马的遍历
- 洛谷1443 马的遍历
- vijos P1443 银河英雄传说
- 图的遍历算法-马遍历棋盘
- Android ContentProvider支持跨进程数据共享与"互斥、同步"杂谈
- 【观察】探寻华为云铸就中国政务云第一品牌的“法宝”
- AndroidStudio利用DiskLruCache和LruCache实现简单的照片墙
- SharePreference原理及跨进程数据共享的问题
- mysql 字符串字段转浮点型字段
- 洛谷p1443 马的遍历
- 判断网络
- vue run dev后自动打开浏览器插件:open-browser-webpack-plugin
- Android WebView加载Chromium动态库的过程分析
- HHUOJ_1003: 数字整除
- pullrefreshdemo
- 基于thinkPHP实现的微信自定义分享功能示例
- springMVC入门--1.新建springMVC工程
- 安全认证框架Shiro(三)- 源码角度解析shiro的权限验证