C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で正確にk個のエッジを持つソースから宛先までの可能なすべてのウォークをカウントします


このチュートリアルでは、正確にk個のエッジを持つソースから宛先までの歩行数を見つけるプログラムについて説明します。

このために、グラフとソースと宛先の値が提供されます。私たちのタスクは、正確にk個のエッジを持つソースから宛先までのすべての可能なパスを見つけることです。

#include <iostream>
using namespace std;
#define V 4
//counting walks using recursion
int countwalks(int graph[][V], int u, int v, int k){
   if (k == 0 && u == v)
      return 1;
   if (k == 1 && graph[u][v])
      return 1;
   if (k <= 0)
      return 0;
   int count = 0;
      //moving to the adjacent nodes
      for (int i = 0; i < V; i++)
      if (graph[u][i] == 1)
      count += countwalks(graph, i, v, k-1);
   return count;
}
int main(){
int graph[V][V] = {
      {0, 1, 1, 1},
      {0, 0, 0, 1},
      {0, 0, 0, 1},
      {0, 0, 0, 0}
   };
   int u = 0, v = 3, k = 2;
   cout << countwalks(graph, u, v, k);
   return 0;
}

出力

2

  1. C ++でBFSを使用して、特定のソースから宛先までのすべてのパスを出力します

    この問題では、有向グラフが表示され、幅優先探索(BFS)を使用してグラフのソースから宛先までのすべてのパスを印刷する必要があります。 有向グラフ は、頂点aからbに向けられたエッジを持つグラフです。 問題を理解するために例を見てみましょう- ソース=K宛先=P 出力 K -> T -> Y -> A -> P K -> T -> Y -> P K -> A -> P ここで、KからPへのパスを見つけました。パスをトラバースし、KからPに向かうすべてのパスを出力しました。 ソースから宛先までのすべてのパスを印刷するに

  2. 特定のソースから宛先までのすべてのパスをC++で出力します

    この問題では、有向グラフが与えられ、グラフのソースから宛先までのすべてのパスを印刷する必要があります。 有向グラフ は、頂点aからbに向けられたエッジを持つグラフです。 問題を理解するために例を見てみましょう ソース=K宛先=P 出力: K -> T -> Y -> A -> P K -> T -> Y -> P K -> A -> P ここで、KからPへのパスを見つけました。パスをトラバースし、KからPに向かうすべてのパスを出力しました。 この問題を解決するために、深さ優先探索を使用してグラフをトラバースします。