কম্পিউটার

C++ এ আউটপুট প্রতিযোগিতার মিল


ধরুন আমাদের n টিম আছে এবং আমরা সবসময় বরং দুর্বল দলের সাথে খেলার জন্য বরং শক্তিশালী দলকে সাজাই, যেমন র‍্যাঙ্ক 1 টিমকে র্যাঙ্ক n সহ দলের সাথে খেলার জন্য, এই কৌশলটি হল প্রতিযোগিতাটিকে আরও আকর্ষণীয় করে তোলা। এখন আমাদের একটি স্ট্রিং আকারে তাদের চূড়ান্ত প্রতিযোগিতার ম্যাচগুলি খুঁজে বের করতে হবে৷

এই দলগুলিকে 1 থেকে n পর্যন্ত ধনাত্মক পূর্ণসংখ্যার আকারে দেওয়া হয়, যা তাদের প্রাথমিক পদমর্যাদার প্রতিনিধিত্ব করে। সুতরাং, র‌্যাঙ্ক 1 হল সবচেয়ে শক্তিশালী দল, এবং র‌্যাঙ্ক এন হল সবচেয়ে দুর্বল দল। আমরা প্রতিযোগী দলের জোড়ার প্রতিনিধিত্ব করতে বন্ধনী এবং কমা ব্যবহার করব - জোড়ার জন্য বন্ধনী ('(', ')') এবং পার্টিশনের জন্য কমা (',')। প্রতিটি রাউন্ডে পেয়ারিং প্রক্রিয়া চলাকালীন, আমাদের সবসময় দুর্বলের সাথে বরং শক্তিশালী এক জোড়া তৈরি করার কৌশল অনুসরণ করতে হবে।

সুতরাং, যদি ইনপুট 4 এর মত হয়, তাহলে আউটপুট হবে ((1,4), (2,3))

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

  • একটি ফাংশন তৈরি করুন(), এটি কম, উচ্চ, অ্যারে v2, অ্যারে v1,

  • যদি কম>=উচ্চ হয়, তাহলে −

    • ফেরত

  • v2 এর শেষে "(" concatenate v1[low] concatenate ", " concatenate v1[high] concatenate ") সন্নিবেশ করুন

  • তৈরি করুন (নিম্ন + 1, উচ্চ - 1, v2, v1)

  • প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -

  • অ্যারে v1, v2

    সংজ্ঞায়িত করুন
  • আরম্ভ করার জন্য i :=1, যখন i <=n, আপডেট করুন (i 1 দ্বারা বাড়ান), −

    • v1

      -এর শেষে স্ট্রিং-এ কনভার্ট করুন
  • যখন v1> 1 এর আকার, −

    করুন
    • তৈরি করুন(0, v1 এর আকার, v2, v1)

    • v1 :=v2

    • v2 অ্যারে সাফ করুন

  • v1

    এর শেষ উপাদান ফেরত দিন

উদাহরণ

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   void create(int low, int high, vector <string>& v2, vector <string>& v1){
      if (low >= high)
         return;
      v2.push_back("(" + v1[low] + "," + v1[high] + ")");
      create(low + 1, high - 1, v2, v1);
   }
   string findContestMatch(int n) {
      vector v1, v2;
      for (int i = 1; i <= n; i++) {
         v1.push_back(to_string(i));
      }
      while (v1.size() > 1) {
         create(0, v1.size() - 1, v2, v1);
         v1 = v2;
         v2.clear();
      }
      return v1.back();
   }
};
main(){
   Solution ob;
   cout << (ob.findContestMatch(4));
}

ইনপুট

4

আউটপুট

((1,4),(2,3))

  1. C++ স্ট্রীম ক্লাস স্ট্রাকচার

  2. C++ এ div() ফাংশন

  3. C++ এ বেসিক ইনপুট/আউটপুট

  4. C++ এ বিশুদ্ধ ফাংশন