কম্পিউটার টিউটোরিয়াল

সি++-এ তিনটি ভিন্ন সোর্টেড অ্যারেতে (max(A[i], B[j], C[k]) - min(A[i], B[j], C[k])) ন্যূনতম করা


কনসেপ্ট

দেয়া তিনটি সোর্টেড অ্যারে A, B, এবং C (যাদের আকার সমান নাও হতে পারে)ოვগে, যেকোনো ট্রিপলেট A[i], B[j], C[k]-এর মধ্যে সর্বাধিক ও ন্যূনতম সংখ্যার পার্থক্য ন্যূনতম করতে হবে। অর্থাৎ (max(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] = 6, B[j] = 7, C[k] = 7 নির্বাচন করি, তখন ন্যূনতম পার্থক্য পাওয়া যায়: max(6,7,7) - min(6,7,7) = |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] = 11, B[j] = 10, C[k] = 11 নির্বাচন করি, তখন ন্যূনতম পার্থক্য পাওয়া যায়: max(11,10,11) - min(11,10,11) = |11-10| = 1

পদ্ধতি

প্রতিটি অ্যারে A, B ও 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++-এ দুটি সর্টেড অ্যারের রিলেটিভ কমপ্লিমেন্ট (Relative Complement) খুঁজে বের করা

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

  3. C++ ব্যবহার করে দুটি অ্যারের এলিমেন্ট বয়ে থर्ड অ্যারেতে মার্জ করা

  4. পাইথনে তিনটি সর্টেড অ্যারে থেকে ম্যাক্স-মিন পার্থক্য ন্যূনতম করা