এই সমস্যায়, আমাদেরকে একই আকারের দুটি ম্যাট্রিক্স mat1[][][] এবং mat2[][] দেওয়া হয়েছে। আমাদের কাজ হল দুটি ম্যাট্রিকে সমান করার জন্য রূপান্তরের সংখ্যা খুঁজে বের করা।
রূপান্তর এক ম্যাট্রিক্স হল −
-
দুটি ম্যাট্রিক্সের যেকোনো ম্যাট্রিক্স নির্বাচন করুন।
-
ম্যাট্রিক্স থেকে একটি সারি বা কলাম নির্বাচন করুন
-
নির্বাচিত সারি বা কলামের সমস্ত উপাদানে 1 যোগ করুন।
সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক,
ইনপুট
mat1[][] ={{1 2}{2 1}}mat1[][] ={{2 3}{4 3}}
আউটপুট
3
ব্যাখ্যা
1 2 => 2 2 => 2 3 => 2 32 1 => 3 1 => 3 2 => 4 3
সমাধান পদ্ধতি
সমস্যার একটি সহজ সমাধান হল রূপান্তর সম্ভব কি না তা খুঁজে বের করে। এর জন্য, আমাদের চেক করতে হবে -
if( mat[i][j] - mat[i][0] - mat[0][j] + mat[0][0] !=0 )
তাহলে কোন সমাধান নেই।
এখন, যদি রূপান্তর সম্ভব হয়, আমরা সারি এবং কলামের জন্য রূপান্তর গণনা করব।
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
( int i =0; iআউটপুট
টিও ম্যাক্সট্রেস সমান করতে রূপান্তরের সংখ্যা 3
দক্ষ পদ্ধতি
হ্যান্ডশেক সূত্র ব্যবহার করে সমস্যার আরও কার্যকর সমাধান।
অ্যারের মডিউলে 0 এবং 1 এর উপস্থিতি গণনা করার জন্য আমরা একটি temp[] অ্যারে তৈরি করব। এবং তারপর গণনা মান ফেরত দিন।
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#includenamespace ব্যবহার করে std;int countEvenSumSubArray(int arr[], int n){int temp[2] ={1, 0}; int count =0, sum =0; জন্য (int i=0; i<=n-1; i++){ sum =( (sum + arr[i]) % 2 + 2) % 2; temp[সমষ্টি]++; } গণনা +=(temp[0]*(temp[0]-1)/2); গণনা +=(temp[1]*(temp[1]-1)/2); রিটার্ন (গণনা);}int main(){ int arr[] ={2, 1, 4, 2}; int n =sizeof (arr) / sizeof (arr[0]); cout<<"জোড় যোগফল সহ সাবাররেগুলির গণনা হল "< আউটপুট
জোড় যোগফল সহ সাবাররে গণনা হল 4