আমাদের একটি ম্যাট্রিক্স দেওয়া হয়েছে এবং কাজটি হল একটি ম্যাট্রিক্সের দুটি সারিতে উপাদানগুলির যোগফলের মধ্যে সর্বাধিক পার্থক্য খুঁজে বের করা৷ ধরুন আমাদের একটি ম্যাট্রিক্স M[i,j] আছে i সারি এবং j কলাম সহ। সারিগুলিকে R0 হতে দিন Ri-1 তে . পার্থক্যটি (Ry এর উপাদানগুলির যোগফল বিয়োগ করে গণনা করা হবে) ) - (Rx এর উপাদানগুলির সমষ্টি ), যেখানে x আসুন এখন বুঝি একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবে −
ইনপুট
আউটপুট
ব্যাখ্যা − এখানে সারি 2-এর উপাদানগুলির যোগফল সর্বাধিক যা 14 এবং সারির উপাদানগুলির যোগফল সর্বনিম্ন, অর্থাৎ 2৷ তাই সর্বাধিক পার্থক্য হল 14-2=12৷
ইনপুট
আউটপুট
ব্যাখ্যা − এখানে সারি 4-এর উপাদানগুলির যোগফল সর্বাধিক যা 10 এবং 2 নং সারির উপাদানগুলির যোগফল সর্বনিম্ন, অর্থাৎ 5৷ তাই সর্বাধিক পার্থক্য হল 10-5=10
একটি ম্যাট্রিক্সে সারি এবং কলামের সংখ্যার জন্য ইনপুট নিন যাতে কমপক্ষে দুটি সারি থাকে৷
rowmaxd() ফাংশনে আমরা ইনপুট ম্যাট্রিক্স পাস করছি এবং এটি সারি গণনা এবং কলাম গণনা এবং সারির যোগফলের সর্বাধিক পার্থক্য প্রদান করছি।
এখানে আমরা প্রথমে RSum[i] নামের একটি অ্যারেতে ম্যাট্রিক্স M[row][col]-এর প্রতিটি সারির উপাদানের যোগফল সংরক্ষণ করব। মনে রাখবেন M[row][col]-এ সারির সংখ্যা অনুযায়ী RSum[সারি] এর দৈর্ঘ্য রয়েছে।
তারপর আমরা MD কে RSum[1]-RSum[0]-এর মধ্যে সর্বোচ্চ পার্থক্য হিসেবে ধরে নেব। এখানে RSum[0] হল সারি 0-এর সমস্ত উপাদানের যোগফল এবং RSums[1] হল সারির 1-এর সমস্ত উপাদানের যোগফল৷
এছাড়াও আমরা ধরে নিচ্ছি যে RSum[0] RSum[সারিতে] সবচেয়ে কম এবং এটিকে MIN ভেরিয়েবলে সংরক্ষণ করছি।
0 থেকে i পর্যন্ত লুপের জন্য আমরা প্রতিটি RSum[সারি] অতিক্রম করব এবং RSum[i]-MIN>MD-এর মধ্যে পার্থক্য তুলনা করব। যদি তাই হয়, এমডি আপডেট করুন। অন্যথায় চেক হল RSum[সারি]
আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −M[4][4] = {
{ 1,2,0,5 },
{0,1,1,0},
{7,2,3,2}
{1,2,4,1}};
Maximum difference here is : 12
M[4][4] = {
{ 0,2,0,5 },
{0,1,4,0},
{1,2,3,2}
{2,2,6,0}};
Maximum difference here is : 5
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
উদাহরণ
#include<stdio.h>
#define MAX 100
//create function to calculate maximum difference between sum of elements of two rows such
that second row appears before the first
int rowmaxd(int M[][MAX], int row, int col){
//for storing sum of elements of each row
int RSum[row];
for(int i=0;i<row;i++){
int sum=0;
for(int j=0;j<col;j++)
sum+=M[i][j];
RSum[i]=sum;
}
//calculate now max difference between two elements of RSum such that in RSum[j]-RSum[i], i<j
int MD=RSum[1]-RSum[0];
int MIN=RSum[0];
for (i = 1; i < row; i++){
//if this difference is more than MD,the update MD
if(RSum[i]-MIN>MD)
MD=RSum[i]-MIN;
//if this value is even less than MIN,then update MIN
if(RSum[i]<MIN)
MIN=RSum[i];
}
return MD;
}
// Driver program
int main(){
int r = 5, c = 4;
int mat[][MAX] = {
{-1, 2, 3, 4},
{6, 3, 0, 1},
{-1, 7, 8, -3},
{3, 5, 1, 4},
{2, 1, 1, 0}};
cout<<”Maximum difference of sum of elements in two rows in a matrix is: ”<<rowmaxd(mat, r, c);
return 0;
}
আউটপুট
Maximum difference of sum of elements in two rows in a matrix: 5