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

সি++ প্রোগ্রাম: যেকোনো বীজগাণিতিক অভিব্যক্তির সর্বোচ্চ মান (Maximum Value) বের করা


এটি যেকোনো বীজগাণিতিক অভিব্যক্তির সর্বোচ্চ মান বের করার একটি সি++ প্রোগ্রাম। (x1 + x2 + x3 + ... + xa) * (y1 + y2 + ... + yb) আকারের একটি বীজগাণিতিক অভিব্যক্তি এবং (a + b) পূর্ণসংখ্যা দেওয়া আছে। a সংখ্যা এবং বাকি b সংখ্যার সব সম্ভাব্য কোম্বিনেশন বিবেচনা করে তাদের মান হিসাব করা হয়, যার থেকে সর্বোচ্চ মান বের করা হয়।

আলগরিদম

Begin
    function MaxValue() :
    Arguments:
    a[] = যেই অ্যারেতে এলিমেন্টগুলো স্টোর করা আছে।
    x, y = পূর্ণসংখ্যা।
    Body of the function:
    1) অ্যারে এলিমেন্টগুলোর যোগফল বের করুন।
    2) s = 0 ইনিশিয়ালাইজ করুন।
    3) for loop i = 0 to (x + y - 1) পূর্ণসংখ্যাগুলো ২৫ দিয়ে শিফট করুন যাতে তারা পজিটিভ হয়।
    4) একটি বুলিয়ান অ্যারে p[i][j] ডিক্লেয়ার করুন যা ট্রু রিপ্রেজেন্ট করে যদি i সংখ্যা চুনে যোগফল j পাওয়া যায়।
    5) অ্যারে ইনিশিয়ালাইজেশন।
    6) for loop i = 0 to (x + y) - 1 لتحديد যদি p[i][j] ট্রু হয়, মানে (x + y) সংখ্যা থেকে i সংখ্যা বেছে নিয়ে যোগফল j পাওয়া যায়।
    7) max_value = -INF ইনিশিয়ালাইজ করুন।
    8) for loop i = 0 to (MAX * MAX + 1) - 1 চেক করুন একটি নির্দিষ্ট যোগফল x সংখ্যা বেছে নিয়ে পাওয়া যায় কিনা।
        if (p[x][i])
            আসল যোগফল বের করুন যেহেতু আমরা সংখ্যাগুলো ২৫ দিয়ে শিফট করেছি নেগেটিভ ইন্ডেক্সিং এড়াতে।
    9) max_value প্রিন্ট করুন।
End

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
#define INF 1e9
#define MAX 25

int MaxValue(int a[], int x, int y) {
    int s = 0;
    for (int i = 0; i < (x + y); i++) {
        s += a[i];
        a[i] += 25;
    }
    bool p[MAX+1][MAX * MAX + 1];
    memset(p, 0, sizeof(p));
    p[0][0] = 1;
    for (int i = 0; i < (x + y); i++) {
        for (int k = min(x, i + 1); k >= 1; k--) {
            for (int j = 0; j < MAX * MAX + 1; j++) {
                if (p[k - 1][j])
                    p[k][j + a[i]] = 1;
            }
        }
    }
    int max_value = -INF;
    for (int i = 0; i < MAX * MAX + 1; i++) {
        if (p[x][i]) {
            int tmp = i - 25 * x;
            max_value = max(max_value, tmp * (s - tmp));
        }
    }
    cout << "Maximum Value: " << max_value;
}

int main() {
    int x = 2, y = 2;
    int ar[] = { 7, 6, 4, 3 };
    MaxValue(ar, x, y);
    return 0;
}

আউটপুট

Maximum Value: 100
  1. ক্যারেক্টারের ASCII মান বের করার C++ প্রোগ্রাম

  2. C++ প্রোগ্রাম: LCM (লঘুতম সাধারণ গুণিতক) নির্ণয়

  3. C++ প্রোগ্রাম: GCD (মহত্তম সাধারণ ভাজক) নির্ণয়

  4. পাইথনে সর্বোচ্চ ইরেজার ভ্যালু বের করার প্রোগ্রাম