【问题标题】:In a N x M matrix find the max number of neighbours equal to the number they are neighbouring in optimal time在 N x M 矩阵中找到最大邻居数,等于它们在最佳时间相邻的数量
【发布时间】:2017-07-17 07:00:11
【问题描述】:

如果您想知道不,这不是我的作业,这只是我在网上找到的,但我无法理解它。

给你一个 N x M 矩阵,其中只有 1 和 0。 .邻居可以通过数字向上、向下、向左、向下或在对角线上。大多数数字有 8 个邻居,而旁边的有 5 个,四个角上的每个有 3 个。我必须找到与矩阵中的数字相等的最大邻居数。

问题是如果不检查矩阵中的每个数字(N x M 检查),我不知道该怎么做。

【问题讨论】:

  • 好吧,如果“你必须检查每个数字”你必须检查(在最坏的情况下)整个板,即N x M 检查
  • 问题实际上并没有说你必须检查每个数字,它只是说要在最佳时间进行
  • 我会编辑出来
  • 为什么“不检查每个号码我都不知道怎么做”是个问题?
  • @user7416538 你反复说“练习说要在最佳时间做”,这就是你假设有什么比线性时间更好的理由;但那句话并没有说明线性时间是否最优。您试图通过发现次线性和失败来证明线性时间不是最优的;现在我建议你尝试证明线性时间最优的,看看你是否可以通过这个证明。如果是这样,你就完成了;如果没有,那应该会指导您进行下一次次线性尝试——或者至少提出一个更好的 SO 问题。

标签: algorithm performance search


【解决方案1】:

你不能避免检查矩阵的每个元素。

想象一个“棋盘”矩阵:

1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1

暂时忽略边,每个元素都有四个相等的邻居。但是,如果您否定任何一个元素(将 0 变为 1 或将 1 变为 0),则某个位置将有五个相等的邻居。因此,如果您提出一种算法,在处理棋盘矩阵时从不查看 r 行和 c 列的元素,那么对于这两个可能的矩阵之一,您肯定会得到错误的答案:上面的棋盘矩阵和棋盘位置 (r,c) 被否定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2014-02-09
    • 2016-03-10
    • 2019-04-09
    • 2016-04-06
    • 2022-11-16
    • 1970-01-01
    相关资源
    最近更新 更多