আমাদের একটি ম্যাট্রিক্স দেওয়া হয়েছে এবং কাজটি হল একটি ম্যাট্রিক্সের দুটি সারিতে উপাদানগুলির যোগফলের মধ্যে সর্বাধিক পার্থক্য খুঁজে বের করা৷ ধরুন আমাদের একটি ম্যাট্রিক্স M[i,j] আছে i সারি এবং j কলাম সহ। সারিগুলিকে R0 হতে দিন Ri-1 তে . পার্থক্যটি (Ry এর উপাদানগুলির যোগফল বিয়োগ করে গণনা করা হবে) ) - (Rx এর উপাদানগুলির সমষ্টি ), যেখানে x
আসুন এখন বুঝি একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবে −
ইনপুট
M[4][4] = { { 1,2,0,5 }, {0,1,1,0}, {7,2,3,2} {1,2,4,1}};
আউটপুট
Maximum difference here is : 12
ব্যাখ্যা − এখানে সারি 2-এর উপাদানগুলির যোগফল সর্বাধিক যা 14 এবং সারির উপাদানগুলির যোগফল সর্বনিম্ন, অর্থাৎ 2৷ তাই সর্বাধিক পার্থক্য হল 14-2=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
ব্যাখ্যা − এখানে সারি 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[সারি]
উদাহরণ
#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