【问题标题】:Interview prep: K Queen attack [closed]面试准备:K皇后攻击[关闭]
【发布时间】:2017-02-02 14:40:14
【问题描述】:

我有一个 N × N 网格和 K 个皇后。 女王可以垂直、水平或对角移动。我想弄清楚是否有任何女王可以在 O(N) 时间内攻击任何其他女王。

【问题讨论】:

  • 嗨@hassam-ullah-sheikh,欢迎来到SO 或类似的... SO 不是代码/算法外包设施。在寻求帮助之前,您需要表现出尽职调查。你的MVCE在哪里?
  • 我投票决定将此问题作为离题结束,因为它似乎与帮助中心定义的编程无关。

标签: algorithm grid-layout


【解决方案1】:

使用与the last answer for rook problem 相同的技术,只需为对角线添加数组。 DiagUpRight[2*N-1]DiagUpLeft[2*N-1]

Q(x,y) 标记对角线 DiagUpLeft[x + y]DiagUpRight[N-1 - y + x]

【讨论】:

    【解决方案2】:

    q_rowq_col 表示女王q 的行和列。然后你可以用这个伪代码解决你的问题:

    for each q in Queens do
        if row[q_row] or column[q_col] or 
           diag1[N + q_row - q_col] or diag2[q_row + q_col] then
            output 'Attacking queen found.'
            break
        else
            row[q_row] = true
            column[q_col] = true
            diag1[N + q_row - q_col] = true
            diag2[q_row + q_col] = true
    

    【讨论】:

    • 谢谢。不明白为什么我不能认为这些简单的步骤。可能是睡眠不足
    • 或者您可能正在等待有人为您完成工作......
    • 随心所欲。
    猜你喜欢
    • 2021-02-02
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 2010-11-08
    相关资源
    最近更新 更多