কম্পিউটার

C++ এ তিনটি ভিন্ন সাজানো বিন্যাসের মিনিমাইজ (সর্বোচ্চ(A[i], B[j], C[k]) – min(A[i], B[j], C[k]))


ধারণা

প্রদত্ত তিনটি সাজানো বিন্যাস A, B, এবং C অগত্যা একই আকারের নয়, সর্বনিম্ন গণনা করুন অর্থাৎ যেকোন ট্রিপলেট A[i], B[j], C[k] এর সর্বোচ্চ এবং সর্বনিম্ন সংখ্যার মধ্যে সর্বনিম্ন পরম পার্থক্য যে তারা যথাক্রমে A, B এবং C এর অধীনে রয়েছে, অর্থাৎ, মিনিমাইজ (সর্বোচ্চ(A[i], B[j], C[k]) - min(A[i], B[j], C[k] ))।

ইনপুট

A : [ 2, 5, 6, 9, 11 ]
B : [ 7, 10, 16 ]
C : [ 3, 4, 7, 7 ]

আউটপুট

1

ব্যাখ্যা

এ A[i], B[j], C[k])) =|7-6| =1

ইনপুট

A = [ 6, 9, 11, 16 ]
B = [ 7, 10, 16, 79, 90 ]
C = [ 3, 4, 7, 7, 9, 9, 11 ]

আউটপুট

1

ব্যাখ্যা

এ A[i], B[j], C[k]))=|11-10| =1

পদ্ধতি

প্রতিটি অ্যারে এ, বি এবং সি-তে সর্বোচ্চ উপাদান দিয়ে শুরু করুন। অনুসরণ করা প্রতিটি ধাপের সময়ে উত্তর আপডেট করতে একটি ভেরিয়েবল ট্র্যাক করুন।

প্রতিটি পদক্ষেপের প্রতি শ্রদ্ধা রেখে, পার্থক্য কমানোর একমাত্র সম্ভাব্য উপায় হল তিনটি উপাদানের মধ্যে সর্বাধিক উপাদান কমানো।

এর ফলস্বরূপ, এই ধাপের জন্য সর্বাধিক উপাদান সমন্বিত অ্যারের পরবর্তী সর্বোচ্চ উপাদানটিতে যান এবং উত্তর পরিবর্তনশীলটি আপডেট করুন৷

আমাদের এই পদক্ষেপটি পুনরাবৃত্তি করতে হবে যতক্ষণ না এবং যতক্ষণ না সর্বোচ্চ উপাদান সম্বলিত অ্যারেটি শেষ না হয়।

উদাহরণ(C++)

// উপরের পদ্ধতির জন্য C++ কোড

#include<bits/stdc++.h>
usingnamespacestd;
intsolve(intA1[], intB1[], intC1[], inti1, intj1, intk1) {
intmin_diff, current_diff, max_term;
// calculating min difference from last
// index of lists
min_diff = abs(max(A1[i1], max(B1[j1], C1[k1]))
- min(A1[i1], min(B1[j1], C1[k1])));
while(i1 != -1 && j1 != -1 && k1 != -1) {
   current_diff = abs(max(A1[i1], max(B1[j1], C1[k1]))
   - min(A1[i1], min(B1[j1], C1[k1])));
   // checking condition
   if(current_diff < min_diff)
      min_diff = current_diff;
      // calculating max term from list
      max_term = max(A1[i1], max(B1[j1], C1[k1]));
      if(A1[i1] == max_term)
         i1 -= 1;
      elseif(B1[j1] == max_term)
         j1 -= 1;
      else
         k1 -= 1;
   }
   returnmin_diff;
}
intmain() {
   intD1[] = { 5, 8, 10, 15 };
   intE1[] = { 6, 9, 15, 78, 89 };
   intF1[] = { 2, 3, 6, 6, 8, 8, 10 };
   intnD = sizeof(D1) / sizeof(D1[0]);
   intnE = sizeof(E1) / sizeof(E1[0]);
   intnF = sizeof(F1) / sizeof(F1[0]);
   cout << solve(D1, E1, F1, nD-1, nE-1, nF-1);
   return0;
}

আউটপুট

1

  1. C++ এ দুটি সাজানো অ্যারের আপেক্ষিক পরিপূরক খুঁজুন

  2. C++ ব্যবহার করে দুটি সাজানো অ্যারে মার্জ করুন।

  3. C++ এ তৃতীয় অ্যারেতে বিকল্পভাবে দুটি ভিন্ন অ্যারের উপাদান একত্রিত করা।

  4. পাইথনে তিনটি ভিন্ন সাজানো অ্যারে থেকে মিনিমাইজ (সর্বোচ্চ(A[i], B[j], C[k]) – min(A[i], B[j], C[k]))