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

C++-এ রিলেশনাল অপারেটর ছাড়া অ্যারেতে সর্বোচ্চ মান বের করুন

একটি পজিটিভ ইন্টিজার অ্যারে দেওয়া আছে। রিলেশনাল অপারেটর (<, >, <=, >=, ==) ব্যবহার ছাড়া সর্বোচ্চ মান বের করতে হবে।

উদাহরণ

ইনপুট: arr = {5,1,6,7,8,2} → আউটপুট: 8

অ্যালগরিদম: রিপিটেড সাবট্র্যাকশন

দুটি সংখ্যা তুলনা করতে হলে দুটো থেকে একসাথে ১ বিয়োগ করুন। যে সংখ্যাটি بعد পর্যন্ত ০ হয় না, সেটিই বড়।

  1. returnMax(x, y) ফাংশনে x এবং y কে একসাথে ডিক্রিমেন্ট করুন যতক্ষণে যেকোনো একটি ০ হয়।
  2. লুপ কাউন্ট = max(x,y)।
  3. অ্যারেতে প্রথম দুটি এলিমেন্টের ম্যাক্স বের করুন, তারপর বাকিগুলোর সাথে কমপেয়ার করুন।

C++ প্রোগ্রাম

#include <iostream>
using namespace std;

int returnMax(int x, int y) {
    int c = 0;
    while (x || y) {
        if (x) x--;
        if (y) y--;
        c++;
    }
    return c;
}

int findMaxEle(int A[], int N) {
    int maxVal = A[0];
    for (int i = N-1; i; i--)
        maxVal = returnMax(maxVal, A[i]);
    return maxVal;
}

int main() {
    int A[] = {5,1,6,7,8,2};
    int N = sizeof(A)/sizeof(A[0]);
    cout << "The maximum element of the array is " << findMaxEle(A, N);
    return 0;
}

আউটপুট

The maximum element of the array is 8

ব্যাখ্যা

  • returnMax দুটি সংখ্যার ম্যাক্স বের করে লুপ কাউন্ট রিটার্ন করে।
  • findMaxEle সারিটি অ্যারেতে প্রসার করে সর্বোচ্চ বের করে।
  • কোনো if (a > b) ব্যবহার হয়নি — শুধু ডিক্রিমেন্ট এবং লুপ কন্ডিশন।
  • টাইম কমপ্লেক্সিটি: O(N × maxVal) — বড় ভ্যালুর জন্য অনুপযুক্ত, শুধু কনসেপ্ট ডেমো।

বাস্তবায়নে

রিয়েল ওয়ার্ল্ডে এই পদ্ধতি ব্যবহার করা হয় না। এটি শুধু লজিক্যাল চ্যালেঞ্জ/ইন্টারভিউ পাজলের জন্য। বাস্তবে std::max_element বা সিম্পল কমপ্যারিজন ব্যবহার করুন।

  1. C++ ব্যবহার করে স্ট্রাকচার অ্যারেতে সর্বোচ্চ মান বের করা

  2. C++ ব্যবহার করে ম্যাট্রিক্সে সর্বোচ্চ যোগফল করা কলাম বের করা

  3. C++-এ অ্যারেতে সর্বোচ্চ GCD वाली পেয়ার বের করা

  4. C++ STL-এ accumulate দিয়ে অ্যারে প্রোডাক্ট বের করা