【问题标题】:Given an N x N chess board and a White King that can move one step in only two directions: right and up给定一个 N x N 棋盘和一个只能在两个方向上移动一步的白国王:向右和向上
【发布时间】:2020-05-21 18:09:34
【问题描述】:

给定一个 N x N 棋盘和一个只能在两个方向上移动一步的白国王:向右和向上。 (假设国王在起始位置的左下角)。而且,一旦国王开始移动,它只能改变一次方向。例如。如果它从第一步向右开始,它可以继续向右或在某个点向上移动。此后,不允许再次向右移动。给定国王的“n”步/移动,它在棋盘上可以达到或通过的最大不同方格是多少?设计一个合适的算法来解决这个问题并计算它的运行时间。

【问题讨论】:

    标签: algorithm data-structures chess chessboard.js


    【解决方案1】:

    答案:(n * (n + 1))/ 2 + n - 1 方格。

    您只需要观察具有较小n 值的可能性即可进行验证。

    让我们看看一些小的ns:

    n = 3     n = 4       n = 5         n = 6      ...
    
    x x o    x x o o    x x o o o    x x o o o o
    x x x    x x x o    x x x o o    x x x o o o
    s x x    x x x x    x x x x o    x x x x o o
             s x x x    x x x x x    x x x x x o
                        s x x x x    x x x x x x
                                     s x x x x x
    
    s: where king starts
    x: squares he can reach
    o: squares he cannot reach
    

    很容易看出他到达了矩阵的所有左下半部分加上对角线数n - 1的正方形:

    n = 6
    
    x\ x \ o o o o
    xx\ x \ o o o
    xxx\ x \ o o
    xxxx\ x \ o
    xxxxx\ x \
    sxxxxx\   \
    
    (n*(n+1))/2 + (n-1)
    

    【讨论】:

    • 不是n(n+1)/2 + n-1 吗? (包括起始位置)
    • 是的,你是对的。我刚刚把左下角的对角线误认为是矩阵的一半。谢谢。
    猜你喜欢
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多