马的遍历
来源:互联网 发布:证券期货软件开发许可 编辑:程序博客网 时间:2024/06/05 05:33
题目描述
有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步
输入输出格式
输入格式:一行四个数据,棋盘的大小和马的坐标
输出格式:一个n*m的矩阵,代表马到达某个点最少要走几步(左对齐,宽5格,不能到达则输出-1)
#include<iostream>#include<cstdio>using namespace std;struct wz{int x,y,z,bnt;}dl[160005];int ltt[405][405];int a,b,c,d,i,j,k,l,m,n,tzz;int main(){cin>>a>>b>>c>>d;dl[1].x=c;dl[1].y=d;ltt[c][d]=-1;tzz=1;for(i=1;i<=tzz;i++){if(dl[i].x+2<=a&&dl[i].y+1<=b){if(ltt[dl[i].x+2][dl[i].y+1]==0){tzz++;dl[tzz].bnt=dl[i].bnt+1;ltt[dl[i].x+2][dl[i].y+1]=dl[tzz].bnt;dl[tzz].x=dl[i].x+2;dl[tzz].y=dl[i].y+1;}}if(dl[i].x+1<=a&&dl[i].y+2<=b){if(ltt[dl[i].x+1][dl[i].y+2]==0){tzz++;dl[tzz].bnt=dl[i].bnt+1;ltt[dl[i].x+1][dl[i].y+2]=dl[tzz].bnt;dl[tzz].x=dl[i].x+1;dl[tzz].y=dl[i].y+2;}}if(dl[i].x-2>0&&dl[i].y-1>0){if(ltt[dl[i].x-2][dl[i].y-1]==0){tzz++;dl[tzz].bnt=dl[i].bnt+1;ltt[dl[i].x-2][dl[i].y-1]=dl[tzz].bnt;dl[tzz].x=dl[i].x-2;dl[tzz].y=dl[i].y-1;}}if(dl[i].x-1>0&&dl[i].y-2>0){if(ltt[dl[i].x-1][dl[i].y-2]==0){tzz++;dl[tzz].bnt=dl[i].bnt+1;ltt[dl[i].x-1][dl[i].y-2]=dl[tzz].bnt;dl[tzz].x=dl[i].x-1;dl[tzz].y=dl[i].y-2;}}if(dl[i].x-1>0&&dl[i].y+2<=b){if(ltt[dl[i].x-1][dl[i].y+2]==0){tzz++;dl[tzz].bnt=dl[i].bnt+1;ltt[dl[i].x-1][dl[i].y+2]=dl[tzz].bnt;dl[tzz].x=dl[i].x-1;dl[tzz].y=dl[i].y+2;}}if(dl[i].x-2>0&&dl[i].y+1<=b){if(ltt[dl[i].x-2][dl[i].y+1]==0){tzz++;dl[tzz].bnt=dl[i].bnt+1;ltt[dl[i].x-2][dl[i].y+1]=dl[tzz].bnt;dl[tzz].x=dl[i].x-2;dl[tzz].y=dl[i].y+1;}}if(dl[i].x+1<=a&&dl[i].y-2>0){if(ltt[dl[i].x+1][dl[i].y-2]==0){tzz++;dl[tzz].bnt=dl[i].bnt+1;ltt[dl[i].x+1][dl[i].y-2]=dl[tzz].bnt;dl[tzz].x=dl[i].x+1;dl[tzz].y=dl[i].y-2;}}if(dl[i].x+2<=a&&dl[i].y-1>0){if(ltt[dl[i].x+2][dl[i].y-1]==0){tzz++;dl[tzz].bnt=dl[i].bnt+1;ltt[dl[i].x+2][dl[i].y-1]=dl[tzz].bnt;dl[tzz].x=dl[i].x+2;dl[tzz].y=dl[i].y-1;}}}for(m=1;m<=a;m++){for(n=1;n<=b;n++){if(m==c&&n==d){ltt[m][n]=0;printf("%-5d",ltt[m][n]);continue;}if(ltt[m][n]==0){ltt[m][n]=-1;printf("%-5d",ltt[m][n]);continue;}printf("%-5d",ltt[m][n]);}cout<<endl;}}
阅读全文
0 0
- 图的遍历算法-马遍历棋盘
- 图的遍历算法-马遍历棋盘
- 马的遍历问题
- 马的遍历
- 马的遍历问题
- 马的遍历
- 马的遍历
- 马的遍历
- 马的遍历问题
- 马的遍历
- poj1915 马的遍历
- 马的遍历问题
- 马的遍历问题
- 马的遍历问题
- [BFS]马的遍历
- P1443 马的遍历
- OJ:马的遍历
- 马的遍历
- 单链表的倒置
- docker面试你要知道
- 第十四周周末总结
- 算法期中 拓补序
- forward和redirect的区别
- 马的遍历
- Socket笔记和简单实例
- 《逆向的入门》-希望能帮到一些对逆向有兴趣的朋友(如有转载请标注SmallSky写)
- 传球游戏
- 弹出层
- JAVA | 46
- 顺序表的创建算法
- 自定义轮播图+网络请求
- exception