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