কম্পিউটার

প্রতিটি প্লেয়ারের জন্য সমস্ত যোগফল সমান করার জন্য কার্ড স্প্রেডের উপায় খুঁজে পেতে C++ কোড


ধরুন আমাদের n উপাদান সহ একটি অ্যারে A আছে। এখানে n সমান। A[i] হল ithcard এ লেখা একটি সংখ্যা। একটি খেলা খেলতে চান যারা n/2 মানুষ আছে. শুরুতে, প্রতিটি খেলোয়াড় দুটি কার্ড নেবে। আমাদের এমনভাবে কার্ড বিতরণের উপায় খুঁজে বের করতে হবে যাতে কার্ডগুলিতে লেখা মানগুলির সমষ্টি প্রতিটি খেলোয়াড়ের জন্য সমান হয়৷

সুতরাং, যদি ইনপুটটি A =[1, 5, 7, 4, 4, 3] এর মত হয়, তবে আউটপুট হবে [(0, 2), (5, 1), (3, 4)], কারণ A[ 0] + A[2] =8, A[5] + A[1] =8 এবং A[3] + A[4] =8।

পদক্ষেপ

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

n := size of A
Define one array of pairs p of size n
for initialize i := 0, when i < n, update (increase i by 1), do:
   first element of p[i] := A[i]
   second element of p[i]:= i
sort the array p, p + n
for initialize i := 0, when i < n / 2, update (increase i by 1), do:
   print second element of p[i] and second element of p[n - i - 1]
এর দ্বিতীয় উপাদান

উদাহরণ

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

#include <bits/stdc++.h>
using namespace std;
void solve(vector<int> A){
   int n = A.size();
   pair<int, int> p[n];
   for (int i = 0; i < n; i++){
      p[i].first = A[i];
      p[i].second = i;
   }
   sort(p, p + n);
   for (int i = 0; i < n / 2; i++)
      cout << "(" << p[i].second << ", " << p[n - i - 1].second <<"), ";
   }  
   int main(){
      vector<int> A = { 1, 5, 7, 4, 4, 3 };
      solve(A);
   }

ইনপুট

{ 1, 5, 7, 4, 4, 3 }

আউটপুট

(0, 2), (5, 1), (3, 4),

  1. C++ এ একটি প্রদত্ত বাইনারি ট্রিতে সমস্ত সঠিক পাতার সমষ্টি খুঁজুন

  2. C++ এ একটি প্রদত্ত বাইনারি ট্রিতে সমস্ত বাম পাতার সমষ্টি খুঁজুন

  3. C++ এ n এর থেকে কম বা সমান সমস্ত ফ্যাক্টরিয়াল সংখ্যা খুঁজুন

  4. C/C++-এ প্রতিটি সদস্যের সাইজের সমষ্টির সমান একটি স্ট্রাকটের সাইজফ কেন নয়?