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 次檢視

啟動您的職業生涯

完成課程獲得認證

開始
廣告