使用 C++ 计算从源到目的地的所有可能路径,其中恰好有 k 条边

c++server side programmingprogramming

在本教程中,我们将讨论一个程序,用于查找从源到目的地的恰好有 k 条边的路径数。

为此,我们将提供一个图表以及源和目的地的值。我们的任务是找到从源到目的地的所有可能路径,其中恰好有 k 条边。

示例

#include <iostream>
using namespace std;
#define V 4
//使用递归计算路径数
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;
      //移动到相邻节点
      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

相关文章