c++ - 我怎样才能找到从a[x][y]到任何a[v][w]的最短路径?

标签 c++ c graph multidimensional-array shortest-path

我有这样的东西。

---a-

aaa--

一个----

---a-

b--a-

我怎样才能以最少的步骤到达b中的所有a? 我该如何用图表来解决这个问题?

最佳答案

a* algorithm可能会很好地为您服务。它的变化是在游戏开发中寻找最短(成本最低的路径)的常见解决方案。至于图表示,定义一个称为节点和连接的结构。您可以使用 std::vector 来存储顶点,使用 std::vector 来存储连接(边)。

typedef struct 
{
  std::string name;
  //Other data that You need.
}Node;

typedef struct
{
  Node* nodeA;
  Node* nodeB;
  int travelCost;
  //other data that may come in handy
}Connection;

std::vector<Node> nodes;
std::vector<Connection> nodeConnections;

关于c++ - 我怎样才能找到从a[x][y]到任何a[v][w]的最短路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22497226/

相关文章:

c++ - 我可以将一个内存池用于多个 vector 吗?

c++ - 使用后将通用对象传递给Rust并传递回C++进行销毁

c - 指针: "Expected identifier before ' (' token"

algorithm - 恢复时间最短的路径

algorithm - 给定有一个负边 (u,v) 的有向加权图,找到最短路径 (s,t)

r - R 中的图例水平图形间距

c++ - 为什么编译器在使用 CRTP 时看不到基类的方法

java - 在Eclipse中使用不同编程语言的方法是什么?

c - bsearch 对按降序排序的数组

c - Valgrind 对结构 + union 的行为