Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में अनंत बिंदुओं की संख्या ढूंढना


इस समस्या में, हमें द्वि-आयामी सरणी mat[n][m] दी जाती है। हमारा कार्य मैट्रिक्स में अनंत बिंदुओं की संख्या ढूंढना है।

मैट्रिक्स का कोई भी बिंदु अनंत कहा जाता है यदि उसके अगले तत्व 1 हैं। यानी

mat[i][j] अनंत है जब mat[i+1][j] … mat[n][j] और mat[i][j+1] … mat[i][m] 1 हैं।

आइए एक उदाहरण से समस्या को समझते हैं,

इनपुट

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

आउटपुट

2

व्याख्या

तत्व mat[0][1] और mat[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++ में परिमेय संख्याओं का LCM खोजें

    यहां हम देखेंगे कि परिमेय संख्याओं का LCM कैसे निकाला जाता है। हमारे पास परिमेय संख्याओं की एक सूची है। मान लीजिए सूची है {2/7, 3/14, 5/3}, तो LCM 30/1 होगा। इस समस्या को हल करने के लिए, हमें सभी अंशों (numerators) का LCM और सभी हरों (denominators) का GCD निकालना होगा, फिर परिमेय संख्याओं का LCM होग

  1. - C++ प्रोग्राम: ग्राफ में आर्टिकुलेशन पॉइंट्स की संख्या खोजें

    ग्राफ में आर्टिकुलेशन पॉइंट्स (या कट वर्टेक्स) एक पॉइंट है यदि इसे हटाने पर (और इसके माध्यम से एज) ग्राफ डिस्कनेक्ट हो जाता है। एक डिस्कनेक्टेड अनडायरेक्टेड ग्राफ के लिए एक आर्टिकुलेशन पॉइंट एक वर्टेक्स है जिसे हटाने पर कनेक्टेड कंपोनेंट्स की संख्या बढ़ जाती है। एल्गोरिदम Begin    हम यहां

  1. - C++ में CHAR_BIT

    CHAR_BIT क्या है? CHAR_BIT एक बाइट में बिट्स की संख्या दर्शाता है। <climits> या <limits.h> हेडर में परिभाषित। आमतौर पर 8 बिट्स प्रति बाइट होता है। C++ प्रोग्राम उदाहरण #include <bits/stdc++.h> using namespace std; int main() { int x = 28; int total_bits = CHAR_BIT * size