• 一时技痒 不用模拟第一印象的构造 通过三个观察得来的规律解决N^2个往返接力问题


    问题原题  见银河使者的随笔  http://www.cnblogs.com/nokiaguy/archive/2009/07/24/1530139.html
    第一印象  我得到了和他一样的解法,就是用斜切片,每一层的 x-1和y+1  来控制顺序写数字的笔落在哪一个坐标。
    但是根据一段时间的观察  我发现了几个规律 可以让我们不用模拟整个顺序的流

    首先我们观察每一个切片
    1 3 4 10 11 21 22 36 37 55
    2 5 9 12 20 23 35 38 54 56
    6 8 13 19 24 34 39 53 57 72
    7 14 18 25 33 40 52 58 71 73
    15 17 26 32 41 51 59 70 74 85
    16 27 31 42 50 60 69 75 84 86
    28 30 43 49 61 68 76 83 87 94
    29 44 48 62 67 77 82 88 93 95
    45 47 63 66 78 81 89 92 96 99
    46 64 65 79 80 90 91 97 98 100
    我们发现 在 n,n 坐标上的每一个数字都是这个切片对称 而且是平均值。 经过简单的计算  我们发现 1-n个切片的平均值 都是(n*n +1)/2

    继续观察 又发现规律了。  这个矩阵对角对称的任意两个格子   正好是距离整个数列中心距离相等的两点  比如1和100 20和81   他们的和必为 max*max +1

    这样我们只要能推算出某一行或者某一列的值   就可以通过上面两个特征来生成整个矩阵了哦



    但是这个矩阵的行列太乱了 很难找出规律 这个时候就要考虑更简单的模型
    我们看看非首尾接力的矩阵

    1

    1 2
    3

    1 2 4
    3 5
    6

    1 2 4 7
    3 5 8
    6 9
    10

    有没有发现  粗体的数字 刚好是之前所有斜切片的总和?
    那么 顺序矩阵和接力矩阵 有什么异同呢?

    1 3 4 10 11 21 22 36 37 55
    2 5 9 12 20 23 35 38 54 56
    6 8 13 19 24 34 39 53 57 72
    7 14 18 25 33 40 52 58 71 73
    15 17 26 32 41 51 59 70 74 85
    16 27 31 42 50 60 69 75 84 86
    28 30 43 49 61 68 76 83 87 94
    29 44 48 62 67 77 82 88 93 95
    45 47 63 66 78 81 89 92 96 99
    46 64 65 79 80 90 91 97 98 100

    我们可以把接力矩阵当成隔行反转的顺序矩阵。这样我们就得到了一个在 x,y轴上摆动的参考值。  有了参考值  就可以根据前两点进行矩阵生成了

    Code

    解法有很多种  这种无疑是很生涩的。 作为面试题目的话  并不建议写这种考官很难理解的解法,会有小鞋

    作为头脑风暴  防止老年痴呆 这个还是有一定意义的
  • 相关阅读:
    二叉树的创建与遍历浅析
    sscanf用法简析
    DB、ETL、DW、OLAP、DM、BI关系 ZT
    惊闻企业Web应用生成平台 活字格 V4.0 免费了,不单可视化设计器免费,服务器也免费!
    商业智能BI-基础理论知识总结 ZT
    【BI学习笔记】适合集成到项目里的BI:Wyn Enterprise
    活字格 QQ 群和客户
    快速开发平台在中国的发展前景
    活字格Web应用平台学习笔记 8
    活字格Web应用平台学习笔记 7
  • 原文地址:https://www.cnblogs.com/waynebaby/p/1530653.html
Copyright © 2020-2023  润新知