এখানে সমস্যা হল একটি ভবনের কক্ষগুলোর গুন্ডাগুলো ন্যূনতম বোম্বাবার্ডমেন্ট দিয়ে হত্যা করা। কক্ষগুলো ১ থেকে n পর্যন্ত লেবেল করা আছে। প্রথম বোম্বাবার্ডমেন্টে গুন্ডাগুলো আহত হয় এবং দ্বিতীয়ে মারা যায়। কক্ষগুলো বোম্বাবার্ডমেন্ট করলে গুন্ডারা ভবনের নিকটতম কক্ষে, বিশেষ করে প্রতিবেশী কক্ষে পালায়ন করে। আমাদের কতগুলো বোম্বাবার্ডমেন্ট দরকার হবে সেটি বের করতে হবে।
উদাহরণ দিয়ে বুঝি
উদাহরণ ১
ইনপুট: int number of rooms = 3
আউটপুট: মোট বোম্বাবার্ডমেন্টের প্রয়োজন 4
2 1 3 2
ব্যাখ্যা: এখানে ন্যূনতম ৪টি বোম্বা দরকার। ধরুন প্রথমে ২ নম্বর কক্ষ বোম্বাবার্ডমেন্ট করলে গুন্ডারা ১ নম্বর বা ৩ নম্বর কক্ষে পালায়ন করবে। তারপর ১ নম্বর কক্ষ বোম্বাবার্ডমেন্ট করলে, ২ নম্বর কক্ষের আহত গুন্ডারা মরবে এবং ১ নম্বর কক্ষের গুন্ডারা আহত होकर নিকটতম ২ নম্বর কক্ষে যাবে। এখন ৩ নম্বর কক্ষ বোম্বাবার্ডমেন্ট করলে, ২ নম্বর কক্ষে আশ্রয় নেওয়া গুন্ডারা মরবে এবং ৩ নম্বর কক্ষের গুন্ডারা ২ নম্বর কক্ষে যাবে। শেষে ২ নম্বর কক্ষ বোম্বাবার্ডমেন্ট করলে ৩ এবং ১ নম্বর কক্ষের আহত গুন্ডারা মরবে এবং মিশন সম্পন্ন হবে।
উদাহরণ ২
ইনপুট: int number of rooms = 2
আউটপুট: মোট বোম্বাবার্ডমেন্টের প্রয়োজন 3
2 1 2
ব্যাখ্যা: এখানে ন্যূনতম ৩টি বোম্বা দরকার। প্রথমে ২ নম্বর কক্ষ বোম্বাবার্ডমেন্ট করলে গুন্ডারা ১ নম্বর কক্ষে যাবে। তারপর ১ নম্বর কক্ষ বোম্বাবার্ডমেন্ট করলে ২ নম্বর কক্ষের আহত গুন্ডারা মরবে এবং ১ নম্বর কক্ষের গুন্ডারা আহত होकर ২ নম্বর কক্ষে যাবে। শেষে ২ নম্বর কক্ষ বোম্বাবার্ডমেন্ট করলে ১ নম্বর কক্ষের আহত গুন্ডারা মরবে এবং মিশন সম্পন্ন হবে।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- প্রথমে ইউজার থেকে কক্ষের সংখ্যা ইনপুট নেওয়া হয়।
- বোম্বের সংখ্যা হিসাব করা হয় (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