题目描述

小 X 最近对战胜韩国围棋大神李世石的 A l p h a G o AlphaGo AlphaGo 很感兴趣,所以小 X X X 自己写了一个叫 做 B e t a G o BetaGo BetaGo的人工智能程序(简称 A I AI AI) , 这个 B e t a G o BetaGo BetaGo 会做什么呢?
小 X 首先想要让 B e t a G o BetaGo BetaGo 做到自己在棋盘上落子, 这一点 A l p h a G o AlphaGo AlphaGo 是由程序员来完成的。小 X X X 的设想是这样的: 在棋盘的边框上放置一个小机器人, 这个小机器人会沿着棋盘的边框移动到最接近落子点的位置,然后伸出它的机械臂将棋子放到棋盘上。 这里面最关键的一步是如何让小机器人在棋盘的边框上沿着最短的路径移动,小 X X X 想请你帮他编个程序解决这个问题。
众所周知,围棋棋盘大小为 19 × 19 19 × 19 19×19(如下图所示) , 图中加粗的一圈即为边框。

我们用一对整数 (x, y) 来表示棋盘上第 x 条横线(从下往上数)与第 y 条竖线(从左往右数)的交叉点,如上图中边框上的 A 点用( 6, 1) 表示, B 点用 (10, 19) 表示,小机器人初始时放置在 (x1,y1) 这个位置上, 它想要移动到 (x2, y2) 这个位置上。 (x1, y1) 和(x2, y2) 一定是棋盘边框上的交叉点每一步小机器人可以从当前位置移动到相邻(上下左右)的某个位置上, 即每次可以从 (x, y) 移动到 (x - 1, y) 、 (x + 1, y) 、 (x, y - 1) 、 (x, y + 1) 四个位置中的一个, 但是它不能走出或走进棋盘,也就是说它只能沿着棋盘的边框移动到相邻位置, 这就意味着任一时刻相邻位置都恰好只有两个。
BetaGo 会告诉小机器人最少需要走多少步, 但小 X 还是很担心 B e t a G o BetaGo BetaGo 有的时候会失控,从而告诉他一个错误值。
为此小 X 只好求助你, 希望你编一个程序计算从 ( x 1 , y 1 ) (x1, y1) (x1,y1) 沿着棋盘的边框移动到 ( x 2 , y 2 ) (x2, y2) (x2,y2) 最少需 要 走 多 少步 。 上 图 中 从 A A A 点 ( 6 , 1 ) ( 6 , 1 ) (6,1) 移 动 到 B 点 ( 10 , 19 ) (10 , 19) (10,19) 最 少需 要 走 32 32 32 步 , 移 动 路线 是 : ( 6 , 1 ) → ( 5 , 1 ) → ( 4 , 1 ) → ( 3 , 1 ) → ( 2 , 1 ) → ( 1 , 1 ) → ( 1 , 2 ) → ( 1 , 3 ) → … … → ( 1 , 19 ) → ( 2 , 19 ) → … … → ( 10 , 19 ) ( 6 , 1 ) → ( 5 , 1 ) → ( 4 , 1 ) → ( 3 , 1 ) → ( 2 , 1 ) → ( 1 , 1 ) → (1 , 2 ) → (1 , 3 ) →……→(1, 19) →(2, 19) →……→(10, 19) (6,1)→(5,1)→(4,1)→(3,1)→(2,1)→(1,1)→(1,2)→(1,3)→……→(1,19)→(2,19)→……→(10,19)

题目分析

方法一:

三种情况:
( 1 ) (1) (1)如果对面两个点
( 2 ) (2) (2)如果相邻直线上的两个点 [ a b s ( x 1 − x 2 ) + a b s ( y 1 − y 2 ) abs(x1-x2)+abs(y1-y2) abs(x1−x2)+abs(y1−y2)]
( 3 ) (3) (3)如果在同一条线上[判断 a b s ( x 1 − x 2 ) abs(x1-x2) abs(x1−x2) 或 a b s ( y 1 − y 2 ) abs(y1-y2) abs(y1−y2)]

Code

#include<bits/stdc++.h>
#define ll long long
using namespace std;const ll MAXN = 1010, mod = 998244353;inline int read() {int x = 0;char c = getchar();while (c < '0' || c > '9') c = getchar();while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();return x;
}ll a1, a2, b1, b2, tmx, tmy;
signed main() {cin >> a1 >> a2 >> b1 >> b2;if (abs(a1 - b1) == 18) {tmx = 18 + a2 - 1 + b2 - 1;tmy = 18 + 19 - a2 + 19 - b2;}if (abs(a2 - b2) == 18) {tmx = 18 + a1 - 1 + b1 - 1;tmy = 18 + 19 - a1 + 19 - b1;}if (a1 == b1)tmx = abs(a2 - b2);if (a2 == b2)tmx = abs(a1 - b1);if (tmx + tmy == 0)tmx = abs(a1 - b1) + abs(a2 - b2);if ((tmx > tmy) && (tmy != 0)) {cout << tmy;} else cout << tmx;return 0;
}

方法二:

爆搜出奇迹!

#include<bits/stdc++.h>
#define ll long long
using namespace std;const ll MAXN = 110, mod = 998244353, dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};;inline int read() {int x = 0;char c = getchar();while (c < '0' || c > '9') c = getchar();while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();return x;
}int a, b, c, d, f[MAXN][MAXN], vis[MAXN][MAXN];int bfs() {queue<pair<int, int>> q;q.push({a, b}), vis[a][b] = 0;while (q.size()) {auto t = q.front();q.pop();for (int i = 0; i < 4; i++) {int X = t.first + dx[i], Y = t.second + dy[i];if (!f[X][Y]) continue;if (vis[X][Y] > vis[t.first][t.second] + 1)vis[X][Y] = vis[t.first][t.second] + 1, q.push({X, Y});if (X == c && Y == d)return vis[X][Y];}}
}
int main() {for (int i = 1; i <= 19; i++)f[i][1] = f[i][19] = f[1][i] = f[19][i] = 1;memset(vis, 0x3f, sizeof vis);a = read(), b = read(), c = read(), d = read();cout << bfs();return 0;
}

小 X 与机器人 (betago)相关推荐

  1. 小R SLAM机器人树莓派3b+ ROS kinetic 环境搭建笔记

    上位机环境搭建基本应该没什么难的,装一个Ubuntu16.04,然后根据ros官方指导来操作即可 http://wiki.ros.org/kinetic/Installation/Ubuntu 树莓派 ...

  2. 初中参观机器人博物馆的作文_展馆导览机器人好不好用?小笨展馆机器人案例...

    每次科技发展都会给社会带来技术变革,例如工业革命时代的纺纱机,发电机等,极大地提高了生产效率,推动了社会的进步.二十一世纪,人工智能成为了当下技术变革的排头兵,机器人作为其载体已经被应用在各类展馆当中 ...

  3. 小瓦怕扫地机器人_小瓦扫地机器人青春版评测报告

    小瓦扫地机器人青春版评测报告 2018-04-03 20:30:00 8点赞 10收藏 7评论 各位值友大家好,首先感谢张大妈给了我这次众测机会,刚结婚的时候因为irobot扫地机器人的无脑清扫机制, ...

  4. 小瓦怕扫地机器人_小瓦扫地机器人青春版app下载-小瓦扫地机器人米家app下载v5.6.81 安卓版-西西软件下载...

    小瓦扫地机器人app是小米旗下生态链企业石头科技最近推出的一款小户型扫地机器人的配套软件,这款全新的扫地机器人比起米家扫地机器人少了激光传感器,主打中低端市场.主要是价格便宜,大家可以通过这款小瓦扫地 ...

  5. NLP微信小程序聊天机器人

    今天把两年前大二时候的小程序又拿来玩了一下,决定开源这个小项目 一个NLP微信小程序聊天机器人,前端就一个页面,后端是php的,可以接图灵等等各种api,也可以自己写个python的接口做NLP算法测 ...

  6. [原创]QQ农场外挂辅助程序-小萝莉偷菜机器人,提供下载。

    做了好几天,白天上班也做,晚上回家也做,终于算成功了,基本的功能都有了,自动偷菜,自动除草,杀虫, 还需要完善,现在又偷的东西,不显示名字的bug. 这个东东是做着玩的,学习研究,非商业性,所以暂时也 ...

  7. 小萝莉偷菜机器人(QQ农场辅助程序)0.3F4 新年版 -2010年1月17日更新

    小萝莉偷菜机器人(QQ农场辅助程序)0.3F4 新年版 -------------------------------------- 使用须知: 本程序需要Microsoft .NET Framewo ...

  8. oppo小布机器人_腾讯宠粉狂欢季丨OPPO手机、腾讯听听音箱、小布AI机器人……100+份豪礼免费送!...

    原标题:腾讯宠粉狂欢季丨OPPO手机.腾讯听听音箱.小布AI机器人--100+份豪礼免费送! 终于迈进了2019年最后一个月 冷空气在昨夜也成功登陆广东 冬天终于来啦!! 然鹅这注定会是个暖冬 因为 ...

  9. 用Flutter实现小Q聊天机器人(二)

    用Flutter实现小Q聊天机器人(一) 用Flutter实现小Q聊天机器人(二) 用Flutter实现小Q聊天机器人(三) 用Flutter实现小Q聊天机器人(四) 用Flutter实现小Q聊天机器 ...

最新文章

  1. 寒假——练车、脑力风暴和辅导初中生
  2. Swift UIAlertView 的使用
  3. 海南岛渔民捞出“鱼雷”,竟是他国间谍机器人
  4. Linux零基础初级教程
  5. 朝花夕拾:代码生成器的基础——获取数据源的架构信息
  6. 前端学习(2326):angular之用户输入数据
  7. 调整selinux状态为disabled
  8. android studio 找不到button对象_为什么那么多漂亮(真漂亮)并且条件优秀的女生找不到对象?...
  9. dnf全部使用_dnf命令 (常用总结)
  10. 现代数字信号处理课后作业【第六章】
  11. android+化学输入法,化学输入法使用说明.pdf
  12. 4.3 木马隐藏分析
  13. 基于物联网的智能厨房安全监测系统-上位机程序
  14. Machine Learning——Linear Model
  15. 苹果xsmax是什么接口_除了苹果,越来越多笔记本都带雷电3了,它凭什么号称最强接口?...
  16. 数据中心的端口密度该如何增加?
  17. JPAQuery日期分组查询
  18. JavaScript历史上的今天是星期几
  19. Processing画小黄人
  20. 【源码分享】响应式风景旅游网页设计-HTML+CSS+JavaScript

热门文章

  1. Java流程控制:实验-控制结构的简单应用:预测未来学费
  2. MYSQL字段,表名大小写的问题 CASE IN-SENSITIVE MYSQL ON LINUX
  3. Windows 10桌面黑屏,只有鼠标,如何解决?
  4. Android手机预装软件内藏大量漏洞
  5. ios safari 模拟器_电脑也能运行iOS?这款iOS模拟器到底靠谱吗
  6. PI控制器的设计与分析
  7. 海信KFR-26G/85FZBpH-A2、KFR-35G/85FZBpH-A2型变频空调电路板故障图解
  8. lisp语言绘制路灯_基于AutoLISP的路灯桩号自动标注程序设计
  9. 不动点迭代法的matlab实现
  10. 关于如何通过IEEE Xplore PDF格式检查