কম্পিউটার

C++ রেখার প্রদত্ত দৈর্ঘ্য ব্যবহার করে সমান্তরালগ্রামের সর্বাধিক সংখ্যা


প্রদত্ত কাজটি হল সর্বাধিক সংখ্যক সমান্তরালগ্রাম খুঁজে বের করা যা প্রদত্ত N সংখ্যক লাইন সেগমেন্ট ব্যবহার করে তৈরি করা যেতে পারে যদি প্রতিটি লাইন সেগমেন্ট সর্বাধিক একটি সমান্তরালগ্রামে ব্যবহার করা যায়।

আসুন এখন বুঝতে পারি একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবে −

ইনপুট − Arr[] ={8, 3, 1, 3, 8, 7, 1, 3, 5, 3}

আউটপুট − 2

ব্যাখ্যা − উপরের প্রদত্ত রেখার অংশগুলির সাথে, যে দুটি সমান্তরালগ্রাম গঠিত হতে পারে তা যথাক্রমে 8, 1, 8, 1 এবং 3, 3, 3, 3 বাহু দিয়ে৷

ইনপুট − Arr[] ={7, 9, 9, 7}

আউটপুট − 1

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • সর্বাধিক সংখ্যক সমান্তরালগ্রাম তৈরি করা যেতে পারে =সমান্তরালগ্রাম যা 4টি সমান বা অনুরূপ বাহু দিয়ে তৈরি করা যেতে পারে এবং 2টি অনুরূপ বাহু ব্যবহার করে সমান্তরালগ্রাম তৈরি করা যেতে পারে৷

  • MaxParr() ফাংশনে, একটি ভেরিয়েবল L =Arr[0] শুরু করুন যা অ্যারের আকার হিসাবে ব্যবহার করা হবে যা লাইন সেগমেন্টের ফ্রিকোয়েন্সি সংরক্ষণ করতে ব্যবহৃত হবে।

  • i=1 থেকে i L), এবং if স্টেটমেন্টের ভিতরে L=Arr[i] লিখুন। লুপের বাইরে L এর আকার 1 দ্বারা বাড়ান।

  • তারপর ফ্রিকোয়েন্সি অ্যারে int Freq[L] ={0} শুরু করুন। i=0 থেকে i

  • সমান্তরালগ্রামের চূড়ান্ত গণনা সংরক্ষণ করার জন্য int-এর প্রাথমিক গণনা =0।

  • i=0 থেকে i

  • 2টি অনুরূপ বাহু ব্যবহার করে গঠিত হতে পারে এমন সমান্তরালগ্রামের সংখ্যা সংরক্ষণ করতে int-এর বাম=0 টাইপ শুরু করুন।

  • অবশেষে i=0 থেকে i=2) এবং যদি তাই হয় তাহলে বাম দিকে 1 যোগ করুন।

  • কাউন্ট+=বাম/2 এবং রিটার্ন কাউন্ট রাখুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int MaxParr(int N, int Arr[]){
   //Finding length of frequency array
   int L = Arr[0];
   for (int i = 1; i < N; i++){
      if (Arr[i] > L)
         L = Arr[i];
   }
   L = L + 1;
   int Freq[L] = {0};
   for (int i = 0; i < N; i++){
      //Increasing occurrence of each line segment
      Freq[Arr[i]] += 1;
   }
   // To store the number of parallelograms
   int count = 0;
   for (int i = 0; i < L; i++){
      /*parallelograms that can be made using 4 same sides*/
      count += int(Freq[i] / 4);
      Freq[i] = Freq[i] % 4;
   }
   int left = 0;
   for (int i = 0; i < L; i++){
      //Counting segments with 2 or more occurrences left
      if (Freq[i] >= 2)
         left += 1;
   }
   /*Adding parallelograms that can be formed using using 2 similar sides into the final count*/
   count += left / 2;
   return count;
}
int main(){
   int N = 10;
   int Arr[] = { 8, 3, 1, 3, 8, 7, 1, 3, 5, 3};
   cout<< MaxParr(N, Arr);
}

আউটপুট

আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −

2

  1. সর্বাধিক সংখ্যা যা C++ এ N সেগমেন্ট ব্যবহার করে সেভেন সেগমেন্ট ডিসপ্লেতে প্রদর্শিত হতে পারে

  2. C++ এ একটি প্রদত্ত সংখ্যার সংখ্যা ব্যবহার করে তৈরি করা যেতে পারে এমন সর্বাধিক সংখ্যা খুঁজুন

  3. C++ ব্যবহার করে প্রদত্ত সংখ্যা পর্যন্ত যোগ করে এমন সমস্ত সমন্বয় খুঁজুন

  4. দীর্ঘতম দৈর্ঘ্য খুঁজে বের করার জন্য প্রোগ্রাম, যা পাইথনে দেওয়া অক্ষর ব্যবহার করে তৈরি করা যেতে পারে