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

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

इस समस्या में, हमें दो आयामी सरणियाँ दी गई हैं मैट [एन] [एम]। हमारा काम मैट्रिक्स में अंतहीन बिंदुओं की संख्या का पता लगाना है।

मैट्रिक्स के किसी भी बिंदु को अंतहीन कहा जाता है यदि उसके अगले तत्व 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 होने की आवश्यकता है।

इसलिए, हम प्रत्येक इंडेक्स के लिए अंतहीन अगली पंक्ति और अंतहीन अगले कॉलम गिनने के लिए दो डीपी मैट्रिसेस का उपयोग करेंगे। और प्रत्येक स्थिति की जाँच करें, यदि स्थिति में अगली अंतहीन पंक्ति और स्तंभ है। फिर अंतहीन तत्वों की गिनती लौटाएं।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,

उदाहरण

#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 ज्ञात कीजिए

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

  1. C++ प्रोग्राम ग्राफ़ में आर्टिक्यूलेशन पॉइंट्स की संख्या ज्ञात करने के लिए

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

  1. C++ में CHAR_BIT

    CHAR_BIT चार में बिट्स की संख्या है। इसे C++ भाषा में “limits.h” हेडर फाइल में घोषित किया गया है। यह 8-बिट प्रति बाइट का होता है। यहाँ C++ भाषा में CHAR_BIT का एक उदाहरण दिया गया है, उदाहरण #include <bits/stdc++.h> using namespace std; int main() {    int x = 28;    int a