আমাদের NXN আকারের একটি ম্যাট্রিক্স দেওয়া হয়েছে৷ লক্ষ্য হল সমস্ত বৈধ জোড়া ইনডেক্সের (i,j) গণনা খুঁজে বের করা যাতে কলাম j-এর যোগফল সারির উপাদানগুলির যোগফলের থেকে বেশি হয়৷
আমরা ম্যাট্রিক্স অতিক্রম করে এটি করব এবং প্রতিটি সারি এবং কলামের উপাদানগুলির যোগফল গণনা করব৷
রোসাম[N]-এ প্রতিটি উপাদানের যোগফল এবং কলসাম[N]-এ প্রতিটি কলামের উপাদানের যোগফল সংরক্ষণ করুন।
এখন rowsum[i] এবং colsum[j] এর জোড়া তৈরি করুন এবং colsum[j]>rowsum[i] কিনা তা পরীক্ষা করুন। যদি এই ধরনের জোড়ার জন্য সত্যিকারের বৃদ্ধির সংখ্যা।
উদাহরণ দিয়ে বোঝা যাক।
Input-: matrix= {
{ 1,2,0,1},
{ 3,3,0,2},
{ 1,3,0,2},
{ 3,0,0,2}
}; আউটপুট − বৈধ জোড়ার সংখ্যা − 9
ব্যাখ্যা −
Rowsum[0]= 1+2+0+1=5 Colsum[0]= 1+3+1+3=8 Rowsum[1]=3+3+0+2=8 Colsum[1]= 2+3+3+0=8 Rowsum[2]= 1+3+0+2=6 Colsum[2]= 0+0+0+0=0 Rowsum[3]=3+0+0+2=5 Colsum[3]= 1+2+2+2=7 Pairs of (i,j) such that rowsum[i] < colsum[j]. (0,0), (0,1), (0,3), (2,0), (2,1), (2,3), (3,0) (3,1), (3,3)
ইনপুট −
Arr[]= { {1,1,1}, {1,1,1}, {1,1,1} } N=3 আউটপুট − বৈধ জোড়ার সংখ্যা − 0
ব্যাখ্যা −
Rowsum[0]= 1+1+1=3 Colsum[0]= 1+1+1=3 Rowsum[1]= 1+1+1=3 Colsum[1]= 1+1+1=3 Rowsum[2]= 1+1+1=3 Colsum[2]= 1+1+1=3 No pairs possible where rowsum[i]<colsum[j]
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ
-
আমরা একটি পূর্ণসংখ্যার অ্যারে নিই Arr[] এলোমেলো সংখ্যার সাথে শুরু।
-
একটি পরিবর্তনশীল n নিন যা Arr[] এর দৈর্ঘ্য সংরক্ষণ করে।
-
ফাংশন কাউন্টপেয়ার্স(int arr[], int n) একটি অ্যারে নেয়, এর দৈর্ঘ্য ইনপুট হিসাবে এবং সেই জোড়া ফেরত দেয় যা বৈধ এবং কাঙ্খিত শর্ত পূরণ করে।
-
আমরা দুটি অ্যারে rowsum[n] এবং colsum[n] নিই।
-
ম্যাট্রিক্স অতিক্রম করুন এবং সারি i এবং কলাম j এর যোগফল গণনা করতে rowsum[i] এবং colsum[j]-এ arr[i][j] যোগ করুন।
-
এখন লুপের জন্য দুটি ব্যবহার করে colsum[] এবং rowsum[] অ্যারেগুলিকে অতিক্রম করুন৷
-
যদি কোন colsum[j]>rowsum[i] হয়। সংখ্যা বৃদ্ধি।
-
ফলাফল হিসাবে গণনা ফেরত দিন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int countPairs(int arr[][3], int n){
// Count of pairs
int count = 0;
int rowsum[n]={0};
int colsum[n]={0};
int i,j;
for (i = 0; i < n; i++){
for (j = 0; j < n; j++){
rowsum[i]+=arr[i][j];
colsum[j]+=arr[i][j];
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++)
if(colsum[j]>rowsum[i])
{ count++; }
}
return count;
}
int main(){
int Arr[][3] = { {1,3,5},{2,4,6},{3,5,7} };
int side=3;
cout <<endl<<"Count of number of pairs : "<< countPairs(Arr, side);
return 0;
} আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেCount of number of pairs : 4