Java 中炸弹的最小数量


这里的问题是如何用最少的炸弹数量来消灭大楼房间里的歹徒。房间编号为 1 到 n。歹徒在第一次炸弹袭击中受伤,在第二次袭击中死亡。当房间被炸弹袭击时,歹徒会跑到大楼里最近的房间,特别是相邻的房间。我们必须计算为了杀死大楼里所有歹徒所需的炸弹数量。

让我们用例子来理解

输入 − int 房间数量 = 3

输出 −所需的总炸弹数量

4

2 1 3 2

解释 − 这里所需的最小炸弹数量是 4。让我们考虑一下,我们首先炸毁第 2 个房间,歹徒会冲到第 1 个或第 3 个房间自救。然后我们炸毁第 1 个房间,这里一些在第 2 个房间袭击中受伤的歹徒会死亡,而躲在第 1 个房间里的歹徒会受伤并冲到第 2 个房间,因为它是离他们最近的房间。现在我们炸毁第 3 个房间,这里躲藏着来自第 2 个房间爆炸的歹徒,所以他们在第 3 个房间的爆炸中死亡,而躲在第 3 个房间里的歹徒会冲到最近的房间,即第 2 个房间,最后我们炸毁第 2 个房间,这里来自第 3 个和第 1 个房间爆炸的受伤歹徒被杀死,这完成了我们的任务。

输入 − int 房间数量 = 2

输出 −所需的总炸弹数量

3

2 1 2

解释 − 这里所需的最小炸弹数量是 3。让我们考虑一下,我们首先炸毁第 2 个房间,歹徒会冲到第 1 个房间自救。然后我们炸毁第 1 个房间,这里一些在第 2 个房间袭击中受伤的歹徒会死亡,而躲在第 1 个房间里的歹徒会受伤并冲到第 2 个房间,因为它是离他们最近的房间。现在我们炸毁第 2 个房间。来自第 1 个房间爆炸的躲藏的歹徒被杀死,这完成了我们的任务。

下面程序中使用的方法如下:

  • 首先,从用户那里获取房间数量作为输入。

  • 计算所需的炸弹数量为 (n+n/2),然后打印。

  • 然后我们炸毁大楼的所有偶数房间,并打印出来。

  • 之后,我们炸毁大楼的奇数房间,并依次打印出来。

  • 最后,我们再次炸毁大楼的偶数房间以结束轰炸过程,并将结果打印给用户。

例子

public class TP{
   public static void main(String[] args){
      int n = 8;
      System.out.println("Total Bombings required");
      System.out.println(n + n / 2);
      for (int i = 2; i <= n; i += 2)
         System.out.print(i + " ");
      for (int i = 1; i <= n; i += 2)
         System.out.print(i + " ");
      for (int i = 2; i <= n; i += 2)
         System.out.print(i + " ");
   }
}

输出

如果我们运行上面的代码,它将生成以下输出

Total Bombings required
12
2 4 6 8 1 3 5 7 2 4 6 8

更新于:2021年11月5日

194 次查看

启动您的职业生涯

完成课程获得认证

开始
广告