কম্পিউটার

C++ এ দুটি ম্যাট্রিক্সকে সমান করতে রূপান্তরের সংখ্যা খুঁজুন


এই সমস্যায়, আমাদেরকে একই আকারের দুটি ম্যাট্রিক্স 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[] অ্যারে তৈরি করব। এবং তারপর গণনা মান ফেরত দিন।

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,

উদাহরণ

#include namespace ব্যবহার করে 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

  1. অ্যারেকে C++ এ সমান সমষ্টির দুটি সাবয়ারেতে ভাগ করা যায় কিনা তা খুঁজুন

  2. C++ ব্যবহার করে দুটি স্ট্রিং সমান করতে প্রদত্ত অপারেশনের ন্যূনতম সংখ্যা প্রয়োজন।

  3. C++ এ মূলদ সংখ্যার LCM খুঁজুন

  4. ম্যাট্রিক্সে দুটি কোষের মধ্যে একটি পথ আছে কিনা তা খুঁজে বের করতে C++ প্রোগ্রাম