ধরুন আমাদের একটি দীর্ঘ ফুলের বিছানা আছে যেখানে কিছু প্লট লাগানো হয়েছে এবং কিছু খালি। এখন একটি প্রতিবন্ধকতা আছে, পাশের জমিতে ফুল লাগানো যাবে না, তারা পানির জন্য প্রতিযোগিতা করবে এবং উভয়ই মারা যাবে। সুতরাং যদি আমাদের একটি ফুলের বিছানা থাকে, যা 0 এবং 1 সম্বলিত একটি অ্যারে দ্বারা প্রতিনিধিত্ব করে, 0 খালি নির্দেশ করে এবং 1 ভরাট নির্দেশ করে এবং একটি সংখ্যা nও দেওয়া হয়, আমাদের পরীক্ষা করতে হবে যে নো-কে লঙ্ঘন না করে n নতুন ফুল রোপণ করা যায় কিনা। সংলগ্ন-ফুলের নিয়ম বা না।
সুতরাং, যদি ইনপুট ফুলবেড =[1,0,0,0,1], n =1 এর মত হয়, তাহলে আউটপুট হবে True
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
যদি ফুলের বিছানার মাপ
-
মিথ্যা ফেরত দিন
-
-
যদি ফ্লাওয়ারবেডের মাপ 1 এর মত হয় এবং ফুলবেড[0] 0 এর মত হয় এবং n 1 এর মত হয়, তাহলে −
-
প্রত্যাবর্তন সত্য
-
-
আরম্ভ করার জন্য i :=0, যখন i <ফুলবেডের আকার, আপডেট করুন (i 1 দ্বারা বাড়ান), করবেন −
-
যদি n> 0 হয়, তাহলে −
-
যদি আমি 0 এর সমান হয়, তাহলে −
-
যদি ফ্লাওয়ারবেড[i] 0 এর মত হয় এবং ফ্লাওয়ারবেড[1] 0 এর মত হয়, তাহলে −
-
ফুলের বিছানা [0] :=1
-
(1 দ্বারা n হ্রাস করুন)
-
-
-
অন্যথায় যখন আমি ফ্লাওয়ারবেডের আকারের সমান - 1, তারপর −
-
যদি ফ্লাওয়ারবেড[i] 0 এর সমান হয় এবং ফুলবেড[i - 1] 1 এর সমান না হয়, তাহলে −
-
ফুলের বিছানা[i] :=1
-
(1 দ্বারা n হ্রাস করুন)
-
-
-
অন্যথায় যখন ফ্লাওয়ারবেড[i] 0 এর মতো এবং ফুলবেড[i + 1] 0 এর মতো এবং ফুলবেড [i - 1] 0 এর মতো, তাহলে −
-
ফুলের বিছানা[i] :=1
-
(1 দ্বারা n হ্রাস করুন)
-
-
-
যদি n 0 এর সমান হয়, তাহলে −
-
প্রত্যাবর্তন সত্য
-
-
-
যদি n 0 এর সমান হয়, তাহলে −
-
প্রত্যাবর্তন সত্য
-
-
মিথ্যা ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
#include <bits/stdc++.h> using namespace std; class Solution { public: bool canPlaceFlowers(vector<int>& flowerbed, int n) { if (flowerbed.size() < n) return false; if (flowerbed.size() == 1 && flowerbed[0] == 0 && n == 1) return true; for (int i = 0; i < flowerbed.size(); i++) { if (n > 0) { if (i == 0) { if (flowerbed[i] == 0 && flowerbed[1] == 0) { flowerbed[0] = 1; n--; } } else if (i == flowerbed.size() - 1) { if (flowerbed[i] == 0 && flowerbed[i - 1] != 1) { flowerbed[i] = 1; n--; } } else if (flowerbed[i] == 0 && flowerbed[i + 1] == 0 && flowerbed[i - 1] == 0) { flowerbed[i] = 1; n--; } } if (n == 0) { return true; } } if (n == 0) { return true; } return false; } }; main(){ Solution ob; vector<int> v = {1,0,0,0,1}; cout << (ob.canPlaceFlowers(v, 1)); }
ইনপুট
{1,0,0,0,1}, 1
আউটপুট
1