คำชี้แจงปัญหาในที่นี้คือการฆ่าลูกน้องในห้องของอาคารที่มีจำนวนระเบิดขั้นต่ำ ห้องจะมีป้ายกำกับว่า 1 ถึง n ลูกน้องได้รับบาดเจ็บจากการทิ้งระเบิดครั้งแรกและเสียชีวิตในครั้งที่สอง เมื่อห้องถูกทิ้งระเบิด พวกลูกน้องรีบไปที่ห้องที่ใกล้ที่สุดในอาคารโดยเฉพาะห้องข้างๆ เราต้องคำนวณจำนวนระเบิดที่จะต้องวางระเบิดในห้องเพื่อที่จะฆ่าลูกน้องทั้งหมดในอาคาร
ให้เราเข้าใจด้วยตัวอย่าง
ป้อนข้อมูล − จำนวนห้อง =3
ผลผลิต −ต้องวางระเบิดทั้งหมด
4
2 1 3 2
คำอธิบาย − จำนวนระเบิดขั้นต่ำที่ต้องใช้ในที่นี้คือ 4 ให้เราพิจารณาก่อนที่เราจะทิ้งระเบิดห้องที่ 2 ที่ลูกน้องจะรีบไปที่ห้องที่ 1 หรือ 3 เพื่อช่วยตัวเอง จากนั้นเราก็วางระเบิดห้องแรก ตรงนี้ลูกน้องที่บาดเจ็บบางส่วนจากการโจมตีห้องที่ 2 จะตาย และพวกกูนที่ซ่อนตัวอยู่ในห้องที่ 1 ได้รับบาดเจ็บและรีบไปที่ห้องที่ 2 เนื่องจากอยู่ใกล้พวกเขาที่สุด ตอนนี้เราทิ้งระเบิดห้องที่ 3 พวกลูกน้องจากห้องที่ 2 ซ่อนตัวอยู่ ดังนั้นพวกมันจึงถูกทิ้งระเบิดในห้องที่ 3 และลูกน้องที่ซ่อนตัวอยู่ในห้องที่ 3 ก็จะรีบไปที่ห้องที่ใกล้ที่สุด เช่น ห้องที่ 2 ในที่สุดเราก็วางระเบิด ห้องที่ 2 ลูกน้องที่บาดเจ็บจากห้องที่ 3 และห้องที่ 1 ถูกฆ่าตาย และภารกิจของเราก็เสร็จสิ้นลง
ป้อนข้อมูล − จำนวนห้อง =2
ผลผลิต −ต้องวางระเบิดทั้งหมด
3
2 1 2
คำอธิบาย − จำนวนระเบิดขั้นต่ำที่ต้องใช้ในที่นี้คือ 3 ให้เราพิจารณาก่อนที่เราจะทิ้งระเบิดในห้องที่ 2 ที่ลูกน้องจะรีบไปที่ห้องที่ 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