【题目描述】

在各种棋中,棋子的走法总是一定的,如中国象棋中马走“日”。有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字。他的同桌平时喜欢下围棋,知道这件事后觉得很有趣,就想试一试,在一个(100×100)的围棋盘上任选两点A、B,A点放上黑子,B点放上白子,代表两匹马。棋子可以按“日”字走,也可以按“田”字走,俩人一个走黑马,一个走白马。谁用最少的步数走到左上角坐标为(1,1)的点时,谁获胜。现在他请你帮忙,给你A、B两点的坐标,想知道两个位置到(1,1)点可能的最少步数。

【输入】

A、B两点的坐标。

【输出】

最少步数。

【输入样例】

12 16
18 10

【输出样例】

8
9

【源程序】

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 101
#define MOD 2520
#define E 1e-12
using namespace std;
int a[N][N];
bool vis[N][N];
int dir[][2]={{-2,1},{-2,-1},{-2,2},{-2,-2},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1},{2,-2},{2,2}};
struct node
{int x;int y;int step;
}q[N*100];
void bfs(int x0,int y0)
{int head=1,tail=1;memset(vis,0,sizeof(vis));q[tail].x=x0;q[tail].y=y0;q[tail].step=0;tail++;vis[x0][y0]=1;while(head<tail){int x=q[head].x;int y=q[head].y;int step=q[head].step;if(x==1&&y==1){printf("%d\n",step);break;}for(int i=0;i<12;i++){int nx=x+dir[i][0];int ny=y+dir[i][1];if(nx>=1&&nx<=100&&ny>=1&&ny<=100&&vis[nx][ny]==0){vis[nx][ny]=1;q[tail].x=nx;q[tail].y=ny;q[tail].step=step+1;tail++;}}head++;}
}
int main()
{int xa,ya,xb,yb;scanf("%d%d%d%d",&xa,&ya,&xb,&yb);bfs(xa,ya);bfs(xb,yb);return 0;
}

最少步数(信息学奥赛一本通-T1330)相关推荐

  1. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  2. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  3. 信息学奥赛一本通T1451:棋盘游戏

    信息学奥赛一本通T1451:棋盘游戏 [题目描述] 在一个 4×4 的棋盘上有 8 个黑棋和 8 个白棋,当且仅当两个格子有公共边,这两个格子上的棋是相邻的.移动棋子的规则是交换相邻两个棋子. 给出一 ...

  4. 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...

  5. 【例8】合唱队形(《信息学奥赛一本通第五版》)

    /* [例8]合唱队形(<信息学奥赛一本通第五版>) http://ybt.ssoier.cn:8088/problem_show.php?pid=1264 [问题描述] N位同学站成一排 ...

  6. 移动玩具(信息学奥赛一本通-T1453)

    [题目描述] 在一个 4×4 的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将 ...

  7. Knight Moves(信息学奥赛一本通-T1450)

    [题目描述] 编写一个程序,计算一个骑士从棋盘上的一个格子到另一个格子所需的最小步数.骑士一步可以移动到的位置由下图给出. [输入] 第一行给出骑士的数量 n. 在接下来的 3n 行中,每 3 行描述 ...

  8. 信息学奥赛一本通 1278:【例9.22】复制书稿(book) | 洛谷 P1281 书的复制

    [题目链接] ybt 1278:[例9.22]复制书稿(book) 洛谷 P1281 书的复制 [题目考点] 1. 动态规划:线性动规 [解题思路] 该题可以抽象为:将由m个数字构成的序列分成k个子段 ...

  9. 信息学奥赛一本通T1453:移动玩具

    信息学奥赛一本通T1453:移动玩具 [题目描述] 在一个 4×4 的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的 ...

最新文章

  1. java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别
  2. Unity,WebGL, 页面JS调用Unity方法
  3. android udp和tcp区别,UDP模式与TCP模式的区别
  4. 3、Docker容器操作
  5. Oracle学习(1)——BLOCK
  6. linux java -xms_为什么JVM比指定的-Xms消耗更少的内存?
  7. Java LocalDate类| 带示例的getEra()方法
  8. python用turtle画小人-画一个心送给心爱的小姐姐,Python绘图库Turtle
  9. 如何用java实现加减_用Java实现不用加减乘除做加法操作
  10. SQL_create_table创建表
  11. 【NOIP2016提高A组模拟9.14】数列编辑器
  12. MT6763芯片资料MT6763处理器性能介绍下载
  13. 社交网络分析中重要指标说明
  14. qtdesigner设计表格_Qt表格视图-简单表格
  15. unity 打包时 StreamingAssets文件的数目过多
  16. 激活 visio Premium 2010 vol 版本
  17. macOS手动启动 Simulator(ios模拟器)
  18. 自建ss报错500 Internal Privoxy Error
  19. 如何提升网站关键词的优化排名?
  20. 树以及二叉树的常用性质以及遍历

热门文章

  1. 入行二十年的一些认知
  2. 技术能变现,才是硬道理
  3. JEECG 树列表操作总刷新列表,需要重新展开问题 【官方补丁,适用所有版本】
  4. Navicat for MySQL 使用SSH方式链接远程数据库
  5. Linux系统:Centos7下搭建PostgreSQL关系型数据库
  6. OracleExcel VBA写获取表字段类型及约束语句
  7. 11.3. hostname
  8. jQuery中的函数汇总1
  9. iOS中 陀螺仪/加速器 韩俊强的博客
  10. 正则表达式 匹配中文,英文字母和数字及_的写法!同时控制长度