Algorithm 如何为这个冲突问题创建最佳解决方案?

Algorithm 如何为这个冲突问题创建最佳解决方案?,algorithm,logic,greedy,Algorithm,Logic,Greedy,假设你正在用轨道炮防御不同长度的战舰,这些轨道炮可以摧毁直线上的任何东西。战列舰位于x、y网格上,并且具有两面和y坐标的参数(x1、x2、y)。你只有有限的资源,需要尝试用最少数量的轨道炮击沉所有战列舰,这些轨道炮将放置在x坐标上 如果x1你的标签包含贪婪,战列舰将被摧毁。贪婪方法可能如下所示: 对开始和结束x坐标以及相应的船舶索引进行排序 浏览完成列表。如果标记了当前项索引-忽略它,否则将所有起始项的索引标记到当前坐标,并在当前坐标处激发 例如,您将在3、6和8点开火 三个列表/数组。一个包

假设你正在用轨道炮防御不同长度的战舰,这些轨道炮可以摧毁直线上的任何东西。战列舰位于x、y网格上,并且具有两面和y坐标的参数(x1、x2、y)。你只有有限的资源,需要尝试用最少数量的轨道炮击沉所有战列舰,这些轨道炮将放置在x坐标上


如果x1你的标签包含贪婪,战列舰将被摧毁。贪婪方法可能如下所示:

对开始和结束x坐标以及相应的船舶索引进行排序

浏览完成列表。如果标记了当前项索引-忽略它,否则将所有起始项的索引标记到当前坐标,并在当前坐标处激发

例如,您将在3、6和8点开火

三个列表/数组。一个包含成对的
(开始[i];i)
,另一个包含成对的
(结束[i];i)
,第三个包含用于标记的布尔[N]


对于ship(0,3,1),结束列表中的第一项为3。因此,我们射击并杀死(标记)船舶(0,3,1)、(1,4,0)和(1,4,4),因为它们的启动时间小于3。

在这种情况下,它将不起作用,在这种情况下,如果您将轨道炮放在冲突最严重的位置,并从列表中删除船只,那么重复此操作,您将在(2,7,1,4)处得到4个轨道炮,在您的示例中,您可以在(1,3,7)处使用3个轨道炮(需要5个轨道炮)(0,1,2,3,7)。如果他们垂直射击正确吗?射击是否会对所有船上连接的船只(如木制船只)产生野火?似乎你必须给出精确的问题公式。他们只需要接触到船,所以在我的第一个例子中,把枪放在1会摧毁3艘船。不确定我是否完全理解,所以为了澄清,我按照右侧索引的顺序对船只进行排序,并将轨道枪放在右侧索引的第一个索引处,然后在继续进行时将船只从列表中删除,对吗?这就是我的想法,但我想这肯定不会这么简单,但我也找不出任何计数器。一般来说,是的。我在回答中加了简短的描述。也许我不太了解杀人条件-我认为枪杀死了所有船只在垂直线上,你会如何证明这一点?