题意:

如图,按照图中的规律给这些格子编号。给出两个格子的编号,求从一个格子到另一个格子的最少步数。(一步只能穿过有有公共边的格子)

分析:

根据高中数学知识,选任意两个不共线的向量,就能表示平面上所有点。

像这样建立坐标系,根据图中的规律算出所有点的坐标。

推理也好,找找规律也好,不难发现

  • 第一、三象限的点(x, y)到原点的距离为 |x| + |y|
  • 第二、四象限的点(x, y)到原点的距离为 max{|x|, |y|}

递推点的坐标的时候也是比较注意细节的,否则很容易出错。

 1 #include <cstdio>
 2 #include <cmath>
 3 #include <algorithm>
 4 using namespace std;
 5 const int maxn = 10000;
 6
 7 struct Point
 8 {
 9     int x, y;
10     Point(int x=0, int y=0):x(x), y(y) {}
11 }p[maxn + 330];
12
13 int dx[] = {-1, -1, 0 , 1 , 1 , 0 };    //六个方向
14 int dy[] = {0 , 1 , 1 , 0 , -1, -1};
15 int pos;
16
17 void cal(int dir, int l)    //按照dir方向递推l个格子的坐标
18 {
19     pos++;
20     while(l--)
21     {
22         p[pos] = Point(p[pos-1].x+dx[dir], p[pos-1].y+dy[dir]);
23         pos++;
24     }
25     pos--;
26 }
27
28 void Init()
29 {
30     p[2] = Point(1, -1);
31     pos = 2;
32     for(int l = 1; l <= 58; ++l)
33     {
34         for(int dir = 0; dir < 4; ++dir)
35             cal(dir, l);
36         cal(4, l+1);
37         cal(5, l);
38     }
39 }
40
41 int main()
42 {
43     Init();
44
45     int n, m;
46     while(scanf("%d%d", &n, &m) == 2 && n)
47     {
48         int x = p[n].x - p[m].x;
49         int y = p[n].y - p[m].y;
50         int ans;
51         if((x<0&&y>0) || (x>0&&y<0)) ans = max(abs(x), abs(y));
52         else ans = abs(x+y);
53
54         printf("The distance between cells %d and %d is %d.\n", n, m, ans);
55     }
56
57     return 0;
58 }

代码君

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4202527.html

UVa 808 (建坐标系、找规律) Bee Breeding相关推荐

  1. UVA - 1647 Computer Transformation(计算机变换)(找规律)

    题意:初始串为一个1,每一步会将每个0改成10,每个1改成01,因此1会依次变成01,1001,01101001,--输入n(n<=1000),统计n步之后得到的串中,"00" ...

  2. UVA - 12627 - Erratic Expansion(找规律递归)

    递归找规律即可,用前b行减去前a-1行的红气球个数求解,细节见代码 #include<cstdio> #include<cstring> #include<cstdlib ...

  3. 找规律万能公式_数列找规律万能公式.doc

    数列找规律公式 数列找规律用拉格朗日插值.拉格朗日"提出"了这种方法,所谓的插值,就是"插""值",就是指找出一个通过给出离散数据点的函数. ...

  4. 找规律万能公式_万能公式:找规律什么的都弱爆了 | 死理性派小组 | 果壳网 科技有意思...

    小学的奥数题中,最令人头疼的题型无非是找规律了,各种毫无规律的数列.你可以试试下面的例子: *1,4,14,53,90,268,977,1586 *1 ,3, 7, 8, 0, 5, 9, 2, 4, ...

  5. 思维、找规律题目汇总

    转自:http://hi.baidu.com/liuzhe/blog/item/d2dc0fd10bf1eadb572c843d.html 感想: 1.还是数学有前途 2.猜想很重要 3.暴力打表可以 ...

  6. 2018.09.01 poj3071Football(概率dp+二进制找规律)

    传送门 概率dp简单题. 设f[i][j]表示前i轮j获胜的概率. 如果j,k能够刚好在第i轮相遇,找规律可以发现j,k满足: (j−1)>>(i−1)(j−1)>>(i−1) ...

  7. 点分治问题 ----------- P3727 曼哈顿计划E[点分治+博弈SG函数打表找规律]

    题目链接 解题思路: 1.首先对于每个操作我们实际上是一个博弈问题 对于k=1的操作就是很基础的NIM游戏就是找到一条链的异或和为0 对于k=2的操作通过达打表找规律: 如果s是奇数那么偶数的SG函数 ...

  8. 数学/找规律/sgu 118 Digital root

    题意 定义f(n)为n各位数字之和,如果n是各位数,则n个数根是f(n),否则为f(n)的数根 现在给出n个Ai,求出A1*A2*-*AN + A1*A2*-*AN-1 + - + A1*A2 + A ...

  9. HDU 5703 Desert 水题 找规律

    HDU 5703 Desert 水题 找规律 已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现 ...

最新文章

  1. 鸿蒙系统方舟运行时,方舟编译器立功!第三方App已经落地,距离鸿蒙系统还会远吗?...
  2. 除了数据,生活中还有这些......
  3. 手把手教你使用 1D 卷积和 LSTM 混合模型做 EEG 信号识别
  4. 死磕Java并发:J.U.C之并发工具类:CyclicBarrier
  5. linux fedora35更改开机默认等待时间timeout
  6. ASP.NET Core快速入门(第5章:认证与授权)--学习笔记
  7. No identities are available for signing 的解决办法
  8. 鸿蒙系统联合,跨界联合 华为鸿蒙系统赋能厨电业
  9. Don't stop pretraining,继续预训练!
  10. 【a202】【9208】输油管道问题
  11. 华硕 tuf b360 efi_1935MHz凶猛上天!ROG STRIX RTX 3070图赏-华硕,RTX 3070,图赏 ——快科技(驱动之家旗下媒体)-...
  12. 使用面向对象方法实现猜拳游戏(Java)
  13. cp:略过目录:”文件名“
  14. \n和endl的区别
  15. 基础工具类Joiner的使用
  16. 端对端加密通讯协议Signal protocol 学习(转)
  17. 考研数学公式Day2:对1/(a+bcosx)的积分
  18. 探讨未来网站发展趋势
  19. SegeX Progress:MFC通用进度条
  20. html hdr文件,hdra和hdr的区别是什么

热门文章

  1. 数据库中Select For update语句的解析
  2. 使用git pull时,项目没有更新?
  3. 《自己动手写操作系统》读书笔记——初识保护模式
  4. DHCP之二 DHCP的中继代理
  5. 百度百科做起来也不难
  6. 在VB.NET中初始化网格实现方法知识讲解
  7. c++《VS2008 快捷键大全》
  8. 我看ITIL在中国(六):如何建设有中国特色的IT运维管理平台【三】
  9. 系统相机裁剪比例_从照相到摄影你只差这5个技巧!人像裁剪这4大原则你一定要了解...
  10. glassfish启动后不能进入部署页面_Flink on Yarn三部曲之二:部署和设置