【问题标题】:Algorithm: Unable to understand this Programming Challenge算法:无法理解这个编程挑战
【发布时间】:2014-12-13 04:37:57
【问题描述】:

我无法理解这个问题。这个问题要我们找到什么以及给出什么。谁能简单地解释一下。

问题

黑客社区的警长有一项非常紧迫的工作要做。他 需要分散小丑放置的所有炸弹。小丑非常 聪明而残忍。他选择了一个 1000 X 1000 点的区域,选择了 N (X,Y) 形式的中心点,并在每个积分上放置炸弹 在半径为 R 的圆形区域上或之内的点 那个选择的点。然后他走到每一个这样的地方并激活 那些位于至少两个这样的圆形区域上或内部的炸弹。

为了给拆弹小队制定一个有效的计划,你 需要帮助警长确定活跃炸弹的数量。

输入:

输入的第一行包含 N。接下来的 N 行包含 3 空格分隔的整数 X Y R 如上所述。

输出:

打印活跃炸弹的数量。

约束: 1 注意:

警长的搜索区域是一个带有对角点 (1,1) 的正方形 和 (1000,1000)

示例输入

2 
5 5 2 
3 4 3

样本输出

9

说明

以下 9 个点都在至少 2 个圆圈内

3 5
4 4
4 5
4 6
5 3
5 4
5 5
5 6
6 4

我不知道如何解决这个问题。小丑在哪里放置了炸弹,我应该如何检查特定区域是否放置了炸弹。对不起,我也可能误解了这一点。

【问题讨论】:

  • 你尝试过什么了吗>?
  • 尝试阅读毕索戈拉斯定理等距离计算公式
  • @mohit 我说我一无所知。如果我不明白问题中给出的内容,我该如何处理。
  • @Jasen 如果我知道解决这个问题需要该部分,我会研究。我不知道问题是什么;解决方案稍后会出现
  • 堆栈溢出不是问这个问题的正确地方,因为它与编程无关。它与英语理解有关。对于它的价值,问题是询问输入描述的圆圈中有多少点(x 和 y 都是整数,并且介于 1 和 1000 之间)。

标签: algorithm matrix


【解决方案1】:

最好的解释方法是从正方形开始......

想象一个这样的网格:

a 1 2 3 4 5 6 7
b 1 2 3 4 5 6 7
c 1 2 3 4 5 6 7
d 1 2 3 4 5 6 7
e 1 2 3 4 5 6 7
f 1 2 3 4 5 6 7

假设中心点是 (c,4),宽度是 3。您的正方形将绘制在点 (b,3) (b,4) (b,5)(c,3),(d ,3) (d,4) (d,5) (c,5)

(c,4) 会在中间.....

所以...对于一个正方形,您将有 9 个(将我描述的所有边缘点和正方形中包含的中心点相加)。

你被要求做同样的事情......用圆圈......祝你好运......

【讨论】:

    【解决方案2】:

    解释这个问题想要什么的最简单的方法是:

    给定由中心 (X, Y) 和半径 (R) 定义的圆列表,1000x1000 网格的积分点数(即整数 (1,4) vs (1.1, 4.4))是在这些圈子的 2 个或更多圈内。

    这就是被问到的。

    有很多方法可以解决这个问题,但那将是一个不同的问题。

    最基本的技术是遍历所有 1000x1000 点,计算每个点到每个圆中心的距离,对于给定圆的距离小于 R 的点,加 1。所有点与将报告大于 1 的值。

    这不一定是最有效的算法。例如,如果列表中有 4 个圆,您将计算 4,000,000 个距离。

    但它会起作用。

    【讨论】:

      【解决方案3】:

      有很多方法可以解决这个问题。一种方法是检查矩阵中的每个点,看看它位于多少个圆中。另一种方法是在一个圆内保留一个点列表,如果该点已经存在,则增加一个计数器。

      【讨论】:

      • 谢谢。你能解释一下这个问题想让我找到什么吗?
      猜你喜欢
      • 1970-01-01
      • 2020-04-15
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多