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

सी ++ में दो शिखरों के बीच सभी संभावित पथों की गणना करें

इस ट्यूटोरियल में, हम दो शीर्षों के बीच पथों की संख्या ज्ञात करने के लिए एक प्रोग्राम पर चर्चा करेंगे।

इसके लिए हमें एक निर्देशित ग्राफ प्रदान किया जाएगा। हमारा कार्य दो दिए गए शीर्षों के बीच संभावित पथों की संख्या ज्ञात करना है।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
//constructing a directed graph
class Graph{
   int V;
   list<int> *adj;
   void countPathsUtil(int, int, bool [],int &);
   public:
      //constructor
      Graph(int V);
      void addEdge(int u, int v);
      int countPaths(int s, int d);
};
Graph::Graph(int V){
   this->V = V;
   adj = new list<int>[V];
}
void Graph::addEdge(int u, int v){
   adj[u].push_back(v);
}
int Graph::countPaths(int s, int d){
   //marking all the vertices
   // as not visited
   bool *visited = new bool[V];
   memset(visited, false, sizeof(visited));
   int pathCount = 0;
   countPathsUtil(s, d, visited, pathCount);
   return pathCount;
}
void Graph::countPathsUtil(int u, int d, bool visited[],
int &pathCount){
   visited[u] = true;
   //if current vertex is same as destination,
   // then increment count
   if (u == d)
      pathCount++;
      //if current vertex is not destination
   else {
      list<int>::iterator i;
      for (i = adj[u].begin(); i != adj[u].end(); ++i)
         if (!visited[*i])
            countPathsUtil(*i, d, visited,pathCount);
   }
   visited[u] = false;
}
int main(){
   Graph g(4);
   g.addEdge(0, 1);
   g.addEdge(0, 2);
   g.addEdge(0, 3);
   g.addEdge(2, 0);
   g.addEdge(2, 1);
   g.addEdge(1, 3);
   int s = 2, d = 3;
   cout << g.countPaths(s, d);
   return 0;
}

आउटपुट

3

  1. X के सभी संभावित मानों की गणना इस प्रकार करें कि C++ में A % X =B

    दो पूर्णांक A और B और एक संख्या X को देखते हुए। लक्ष्य उन मानों की गणना करना है जो X के पास हो सकते हैं ताकि A%X=B हो। उपरोक्त समीकरण के लिए यदि, A==B तो X के अनंत मान संभव हैं, इसलिए -1 लौटाएं। यदि ए बी तो परिणाम के रूप में (एबी) के भाजक की गणना करें। उदाहरण के लिए इनपुट A=5, B=2 आउटपुट Count of

  1. सी++ में मैनहट्टन दूरी के बराबर दूरी वाले पथों की गणना करें

    हमें चर x1, x2, y1, y2 दिए गए हैं जो 2D निर्देशांक प्रणाली पर दो बिंदुओं का प्रतिनिधित्व करते हैं (x1, y1) और (x2, y2)। लक्ष्य उन सभी रास्तों को खोजना है जिनकी दूरी इन दो बिंदुओं के बीच मैनहट्टन की दूरी के बराबर होगी। मैनहट्टन दूरी मैनहट्टन दो बिंदुओं (x1, y1) और (x2, y2) के बीच की दूरी है - एमडी

  1. सी ++ में एक पेड़ में दो गैर-अंतर्विभाजक पथों का अधिकतम उत्पाद

    इस समस्या में, हमें n नोड्स के साथ एक अप्रत्यक्ष कनेक्टेड ट्री T दिया जाता है। हमारा कार्य C++ में एक ट्री में दो गैर-अंतर्विभाजकपथों के अधिकतम उत्पाद को खोजने के लिए एक प्रोग्राम बनाना है। समस्या का विवरण - एक पेड़ में दो अप्रतिच्छेदी पथों का अधिकतम गुणनफल ज्ञात करना। हम सभी गैर-दिलचस्प पथ खोजेंगे