最少步数(信息学奥赛一本通-T1330)
【题目描述】
在各种棋中,棋子的走法总是一定的,如中国象棋中马走“日”。有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字。他的同桌平时喜欢下围棋,知道这件事后觉得很有趣,就想试一试,在一个(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)相关推荐
- 信息学奥赛一本通 (C++)上机练习
信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...
- 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)
信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法 更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...
- 信息学奥赛一本通T1451:棋盘游戏
信息学奥赛一本通T1451:棋盘游戏 [题目描述] 在一个 4×4 的棋盘上有 8 个黑棋和 8 个白棋,当且仅当两个格子有公共边,这两个格子上的棋是相邻的.移动棋子的规则是交换相邻两个棋子. 给出一 ...
- 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...
- 【例8】合唱队形(《信息学奥赛一本通第五版》)
/* [例8]合唱队形(<信息学奥赛一本通第五版>) http://ybt.ssoier.cn:8088/problem_show.php?pid=1264 [问题描述] N位同学站成一排 ...
- 移动玩具(信息学奥赛一本通-T1453)
[题目描述] 在一个 4×4 的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将 ...
- Knight Moves(信息学奥赛一本通-T1450)
[题目描述] 编写一个程序,计算一个骑士从棋盘上的一个格子到另一个格子所需的最小步数.骑士一步可以移动到的位置由下图给出. [输入] 第一行给出骑士的数量 n. 在接下来的 3n 行中,每 3 行描述 ...
- 信息学奥赛一本通 1278:【例9.22】复制书稿(book) | 洛谷 P1281 书的复制
[题目链接] ybt 1278:[例9.22]复制书稿(book) 洛谷 P1281 书的复制 [题目考点] 1. 动态规划:线性动规 [解题思路] 该题可以抽象为:将由m个数字构成的序列分成k个子段 ...
- 信息学奥赛一本通T1453:移动玩具
信息学奥赛一本通T1453:移动玩具 [题目描述] 在一个 4×4 的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的 ...
最新文章
- java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别
- Unity,WebGL, 页面JS调用Unity方法
- android udp和tcp区别,UDP模式与TCP模式的区别
- 3、Docker容器操作
- Oracle学习(1)——BLOCK
- linux java -xms_为什么JVM比指定的-Xms消耗更少的内存?
- Java LocalDate类| 带示例的getEra()方法
- python用turtle画小人-画一个心送给心爱的小姐姐,Python绘图库Turtle
- 如何用java实现加减_用Java实现不用加减乘除做加法操作
- SQL_create_table创建表
- 【NOIP2016提高A组模拟9.14】数列编辑器
- MT6763芯片资料MT6763处理器性能介绍下载
- 社交网络分析中重要指标说明
- qtdesigner设计表格_Qt表格视图-简单表格
- unity 打包时 StreamingAssets文件的数目过多
- 激活 visio Premium 2010 vol 版本
- macOS手动启动 Simulator(ios模拟器)
- 自建ss报错500 Internal Privoxy Error
- 如何提升网站关键词的优化排名?
- 树以及二叉树的常用性质以及遍历