কম্পিউটার

C++ এ অন্তহীন পয়েন্টের সংখ্যা খুঁজুন


এই সমস্যায়, আমাদেরকে দেওয়া হয়েছে দ্বিমাত্রিক অ্যারে ম্যাট[n][m]। আমাদের কাজ হল ম্যাট্রিক্সে অন্তহীন বিন্দুর সংখ্যা খুঁজে বের করা।

ম্যাট্রিক্সের যেকোনো বিন্দুকে অন্তহীন বলা হয় যদি এর পরবর্তী উপাদান 1 হয়। অর্থাৎ

mat[i][j] is endless when mat[i+1][j] … mat[n][j] and
mat[i][j+1] … mat[i][m] are 1.

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

ইনপুট

mat[][] = {0, 0}
{1, 1}

আউটপুট

2

ব্যাখ্যা

এলিমেন্ট ম্যাট[0][1] এবং ম্যাট[1][1] অন্তহীন।

সমাধান পদ্ধতি

সমস্যার একটি সহজ সমাধান ম্যাট্রিক্সের সমস্ত উপাদান পুনরাবৃত্তি করে। এবং প্রতিটি উপাদানের জন্য বর্তমান উপাদানটি অন্তহীন কিনা তা পরীক্ষা করুন। যদি হ্যাঁ, গণনা বাড়ান। অ্যারের সমস্ত উপাদান চেক করার পরে গণনা ফেরত দিন।

দক্ষ পদ্ধতি

সমস্যা সমাধানের জন্য, আমরা উপাদানগুলি অন্তহীন কিনা তা পরীক্ষা করতে ডায়নামিক প্রোগ্রামিং ব্যবহার করব। এটি অন্তহীন হওয়ার জন্য এটির সারি এবং কলামগুলির সমস্ত উপাদান 1 হওয়া দরকার৷

সুতরাং, আমরা প্রতিটি সূচকের জন্য অন্তহীন পরবর্তী সারি এবং অন্তহীন পরবর্তী কলামগুলি গণনা করতে দুটি DP ম্যাট্রিক্স ব্যবহার করব। এবং প্রতিটি অবস্থানের চেক, যদি অবস্থানের পরবর্তী অন্তহীন সারি এবং কলাম থাকে। তারপর অন্তহীন উপাদানের গণনা ফেরত দিন।

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

উদাহরণ

#include <iostream>
#include <math.h>
using namespace std;
const int monthDays[12] = { 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
int countLeapYearDays(int d[]){
   int years = d[2];
   if (d[1] <= 2)
      years--;
   return ( (years / 4) - (years / 100) + (years / 400) );
}
int countNoOfDays(int date1[], int date2[]){
   long int dayCount1 = (date1[2] * 365);
   dayCount1 += monthDays[date1[1]];
   dayCount1 += date1[0];
   dayCount1 += countLeapYearDays(date1);
   long int dayCount2 = (date2[2] * 365);
   dayCount2 += monthDays[date2[1]];
   dayCount2 += date2[0];
   dayCount2 += countLeapYearDays(date2);
   return ( abs(dayCount1 - dayCount2) );
}
int main(){
   int date1[3] = {13, 3, 2021};
   int date2[3] = {24, 5, 2023};
   cout<<"The number of days between two dates is "<<countNoOfDays(date1, date2);
   return 0;
}

আউটপুট

The number of days between two dates is 802

  1. C++ এ পাটিগণিত সংখ্যা

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

  3. একটি গ্রাফে আর্টিকুলেশন পয়েন্টের সংখ্যা খুঁজে পেতে C++ প্রোগ্রাম

  4. C++ এ CHAR_BIT