এই নিবন্ধে, আমরা একটি প্রদত্ত ম্যাট্রিক্স বা 2-ডি অ্যারেতে সর্বাধিক যোগফল সহ একটি জোড়া খুঁজে বের করার বিষয়ে আলোচনা করব। যেমন
Input : matrix[m][n] = { { 3, 5, 2 }, { 2, 6, 47 }, { 1, 64, 66 } } Output : 130 Explanation : maximum sum is 130 from element pair 64 and 66. Input : matrix[m][n] = { { 55, 22, 46 }, { 6, 2, 1 }, { 3, 24, 52 } } Output : 107 Explanation : maximum sum is 130 from element pair 55 and 52.
সমাধান খোঁজার পদ্ধতি
কোন সমস্যা ছাড়াই প্রদত্ত সমস্যা সমাধানের জন্য বিভিন্ন পদ্ধতির সংক্ষিপ্ত ব্যাখ্যা দেওয়া যাক।
ব্রুট-ফোর্স অ্যাপ্রোচ
একটি ব্রুট-ফোর্স পদ্ধতি প্রয়োগ করা যেতে পারে, অর্থাৎ, প্রথম দুটি উপাদানের যোগফল দিয়ে MAX ভেরিয়েবলকে আরম্ভ করুন এবং তারপর প্রতিটি জোড়ার অ্যারে এবং চেকসাম দিয়ে অতিক্রম করুন যদি এটি নতুন যোগফলের MAX MAX-এর চেয়ে বেশি গুরুত্বপূর্ণ হয়। কিন্তু এই প্রক্রিয়াটি O((m*n)2) এর সময় জটিলতার সাথে আরও বেশি সময় নেবে।
দক্ষ পদ্ধতি
একটি দক্ষ পন্থা প্রয়োগ করা যেতে পারে, অর্থাৎ, 0 দিয়ে দুই-ভেরিয়েবল MAX1 এবং MAX2 শুরু করুন এবং তারপর 2-D অ্যারের মাধ্যমে অতিক্রম করুন; বর্তমান উপাদানটি MAX1 এর চেয়ে বেশি তাৎপর্যপূর্ণ কিনা তা পরীক্ষা করুন। যদি হ্যাঁ, তাহলে MAX2 কে MAX1 দিয়ে এবং MAX1 কে বিদ্যমান অংশ দিয়ে প্রতিস্থাপন করুন। এইভাবে, আমরা দুটি সর্বাধিক সংখ্যা খুঁজে পেতে সক্ষম হব, এবং স্পষ্টতই, দুটি পূর্ণ সংখ্যার যোগফল সর্বাধিক হবে৷
উদাহরণ
#include <bits/stdc++.h> using namespace std; int main() { int m = 3, n = 3; // initialising matrix with values int matrix[m][n] = { { 55, 22, 46 }, { 6, 2, 1 }, { 3, 24, 52 } }; // initialising MAX1 and MAX2 to keep two maximum numbers. int MAX1 = INT_MIN; int MAX2 = INT_MIN; int result; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { // check if the element is greater than MAX1. if (matrix[i][j] > MAX1) { MAX2 = MAX1; MAX1 = matrix[i][j]; } // check if the current element is between MAX1 and MAX2. else if (matrix[i][j] > MAX2 && matrix[i][j] <= MAX1) { MAX2 = matrix[i][j]; } } } // calculating maximum sum by adding both maximum numbers. result = MAX1 + MAX2; cout << "maximum sum in Matrix : " << result ; return 0; }
আউটপুট
maximum sum in Matrix : 107
উপরের কোডের ব্যাখ্যা
- 2-ডি অ্যারেতে উপাদান সংরক্ষণ করা এবং MAX1 এবং MAX2 শুরু করা ন্যূনতম INT মান সহ।
- ম্যাট্রিক্সের মধ্য দিয়ে যাওয়া।
- যদি বর্তমান অংশটি MAX1-এর থেকে বেশি তাৎপর্যপূর্ণ হয়, তাহলে MAX2-কে MAX1 দিয়ে এবং MAX1-কে বর্তমান উপাদান দিয়ে প্রতিস্থাপন করুন।
- যদি বর্তমান অংশটি MAX1 এর চেয়ে বেশি হ্রাস পায় এবং MAX2 এর চেয়ে বেশি অর্থপূর্ণ হয়, তাহলে বর্তমান উপাদানটির সাথে MAX2 প্রতিস্থাপন করুন।
- দুটি MAX1 এবং MAX2 যোগ করে ফলাফল গণনা করুন এবং কাজটি প্রিন্ট করুন৷
উপসংহার
এই নিবন্ধে, আমরা একটি প্রদত্ত ম্যাট্রিক্সে সর্বাধিক যোগফল সহ একটি জোড়া খুঁজে বের করার বিষয়ে আলোচনা করেছি। আমরা একটি সমাধান খোঁজার পদ্ধতি নিয়ে আলোচনা করেছি এবং এর জন্য C++ কোড নিয়েও আলোচনা করেছি। আমরা এই কোডটি জাভা, সি, পাইথন ইত্যাদির মতো অন্য যেকোনো ভাষায় লিখতে পারি। আমরা আশা করি এই নিবন্ধটি আপনার কাজে লাগবে।