কম্পিউটার

C++ এ দলের সংখ্যা গণনা করুন


ধরুন একটি লাইনে n সৈন্যরা দাঁড়িয়ে আছে। এখানে প্রতিটি সৈনিক একটি অনন্য রেটিং মান বরাদ্দ করা হয়. নিম্নলিখিত নিয়মগুলি ব্যবহার করে আমাদের 3 জন সৈন্যের একটি দল তৈরি করতে হবে -

সূচক (i, j, k) সহ 3 জন সৈন্য চয়ন করুন যাতে রেটিং (রেটিং[i], রেটিং[j], রেটিং[k])।

একটি দল বৈধ হবে যদি − (রেটিং[i] <রেটিং[j] <রেটিং[k]) বা (রেটিং[i]> রেটিং[j]> রেটিং[k])।

আমরা কয়টি দল গঠন করতে পারি তা খুঁজে বের করতে হবে। (সৈন্যরা একাধিক দলের অংশ হতে পারে)।

সুতরাং, যদি ইনপুট রেটিং =[2,5,3,4,1] এর মত হয়, তাহলে আউটপুট হবে 3, যেমন আমরা তিনটি দল গঠন করতে পারি যেমন (2,3,4), (5,4,1) , (5,3,1)।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • ret :=0, n :=v

    এর আকার
  • আরম্ভ করার জন্য i :=0, যখন i

    • j শুরু করার জন্য :=i + 1, যখন j করুন

      • আরম্ভ করার জন্য k :=j + 1, যখন k

        • যদি v[i]

          • (রেট 1 দ্বারা বৃদ্ধি করুন)

        • অন্যথায় যখন v[i]> v[j] এবং v[j]> v[k], তারপর −

          • (রেট 1 দ্বারা বৃদ্ধি করুন)

  • রিটার্ন রিটার্ন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int numTeams(vector<int>& v) {
      int ret = 0;
      int n = v.size();
      for (int i = 0; i < n; i++) {
         for (int j = i + 1; j < n; j++) {
            for (int k = j + 1; k < n; k++) {
               if (v[i] < v[j] && v[j] < v[k])
                  ret++;
               else if (v[i] > v[j] && v[j] > v[k])
                  ret++;
            }
         }
      }
      return ret;
   }
};
main(){
   Solution ob;
   vector<int> v = {2,5,3,4,1};
   cout << (ob.numTeams(v));
}

ইনপুট

{2,5,3,4,1}

আউটপুট

3

  1. C++ পেন্টাটোপ নম্বর

  2. C++ এ একটি আয়তক্ষেত্রে বর্গক্ষেত্রের সংখ্যা গণনা করুন

  3. C++ এ ফ্যাক্টরিয়ালের সংখ্যা গণনা করুন

  4. C++-এ চমৎকার সাবরে-এর সংখ্যা গণনা করুন