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