কম্পিউটার

C++ এ 0 এবং 1 এর সাজানো অ্যারেতে প্রথম 1-এর সূচক খুঁজুন


এই সমস্যায়, আমাদেরকে সাজানো ক্রমে বুলিয়ান মান (শুধুমাত্র 0 এবং 1'স) সমন্বিত একটি অ্যারে বিন [] দেওয়া হয়েছে। আমাদের কাজ হল 0 এবং 1 এর সাজানো অ্যারেতে প্রথম 1 এর সূচী খুঁজে বের করা .

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

Input : bin[] = {0, 0, 0, 1, 1}
Output : 3

ব্যাখ্যা

First 1 of the binary array is encountered at index 3.

সমাধান পদ্ধতি

সমস্যা সমাধানের জন্য, আমাদের মূলত অ্যারেতে 1ম 1 এর সূচকটি খুঁজে বের করতে হবে। এর জন্য আমরা একটি অনুসন্ধান কৌশল ব্যবহার করতে পারি।

একটি পদ্ধতি রৈখিক অনুসন্ধান ব্যবহার করা যেতে পারে, আমরা সূচক 0 থেকে অ্যারের শেষ পর্যন্ত অ্যারেটি অতিক্রম করব। এবং অ্যারের প্রথম 1-এর সূচী ফেরত দিন, অন্যথায় -1 প্রিন্ট করুন।

উদাহরণ

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম

#include <iostream>
using namespace std;
double find1stOneInArray(int bin[], int n) {
   for (int i = 0; i < n; i++)
      if (bin[i] == 1)
         return i;
      return -1;
}
int main() {
   int bin[] = { 0, 0, 0, 1, 1, 1 };
   int n = sizeof(bin) / sizeof(bin[0]);
      cout<<"The index of 1st occurrence of 1 in array is "<<find1stOneInArray(bin,n);
      return 0;
}

আউটপুট

The index of 1st occurrence of 1 in array is 3

অন্য একটি অনুসন্ধান কৌশল যেটি ব্যবহার করা যেতে পারে বাইনারি অনুসন্ধান হিসাবে অ্যারে সাজানো হয়।

উদাহরণ

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম

#include <iostream>
using namespace std;
double find1stOneInArray(int bin[], int n) {
   int low = 0;
   int high = (n - 1);
   int mid;
   while (low <= high) {
      mid = (low + high) / 2;
      if (bin[mid] == 1 && (mid == 0 || bin[mid - 1] == 0))
         return mid;
      else if (bin[mid] == 1)
         high = mid - 1;
      else
         low = mid + 1;
   }
   return -1;
}
int main() {
   int bin[] = { 0, 0, 0, 1, 1, 1, 1 };
   int n = sizeof(bin) / sizeof(bin[0]);
      cout<<"The index of 1st occurrence of 1 in array is "<<find1stOneInArray(bin,n);
   return 0;
}

আউটপুট

The index of 1st occurrence of 1 in array is 3

  1. C++ ব্যবহার করে একটি অ্যারের মধ্যে একটি সংখ্যার ফ্রিকোয়েন্সি খুঁজুন।

  2. C++ এ রোটেটেড সর্টেড অ্যারেতে রোটেশন কাউন্ট খুঁজুন

  3. সংখ্যার বিন্যাসের গুণফলের প্রথম সংখ্যা খুঁজে পেতে C++ প্রোগ্রাম

  4. অ্যারে বিভক্ত করতে এবং শেষে প্রথম অংশ যোগ করতে C++ প্রোগ্রাম?