কম্পিউটার টিউটোরিয়াল

C++-এ ফুল লাগানো সম্ভব কিনা (Can Place Flowers)

একটি লম্বা ফুলবাগান আছে যেখানে কিছু প্লটে ফুল লাগানো আছে এবং কিছু খালি। নিচু শর্ত: দুটি সন্নিহিত প্লটে ফুল লাগানো যাবে না (পানি জন্য লড়াই করবে)। ফুলবাগান ০ ও ১ সম্বলিত অ্যারে আকারে দেওয়া আছে (০=খালি, ১=ভরা)। একটি সংখ্যা n দেওয়া আছে। চেক করতে হবে n টি নতুন ফুল লাগানো সম্ভব কিনা নিচু শর্ত লঙ্ঘন না করে।

ইনপুট flowerbed = [1,0,0,0,1], n = 1 হলে আউটপুট True।

সমাধানের ধাপসমূহ

  • যদি flowerbed.size() < n হয়, false রিটার্ন করুন
  • যদি আকার ১ এবং flowerbed[0]==0 এবং n==1 হয়, true রিটার্ন করুন
  • প্রতিটি i এর জন্য:
    • যদি n>0 হয়:
      • i==0 হলে: flowerbed[0]==0 এবং flowerbed[1]==0 হলে flowerbed[0]=1, n--
      • i==size-1 হলে: flowerbed[i]==0 এবং flowerbed[i-1]!=1 হলে flowerbed[i]=1, n--
      • অন্যথায়: flowerbed[i]==0 এবং flowerbed[i-1]==0 এবং flowerbed[i+1]==0 হলে flowerbed[i]=1, n--
    • যদি n==0 হয়, true রিটার্ন করুন
  • শেষে n==0 হলে true, অন্যথায় false রিটার্ন করুন

উদাহরণ

#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;
    }
};
int main(){
    Solution ob;
    vector<int> v = {1,0,0,0,1};
    cout << (ob.canPlaceFlowers(v, 1));
}

ইনপুট

{1,0,0,0,1}, 1

আউটপুট

1
  1. C++ দিয়ে কনসোল ক্লিয়ার করা

  2. C++-এ নেমস্পেস কি নেস্টেড হয়তে পারে?

  3. C++-এ main ফাংশন কি নিজেকে কল করতে পারে?

  4. কি C++ ভেরিয়েবল একসাথে const এবং volatile হতে পারে?