给定网格中的 3 个点,您如何找到一个点,使该点与所有 3 个点的距离总和最小化。这个问题的一个明显答案是费马三角形。我有兴趣知道我们是否可以在图中使用广度优先搜索算法来定位费马点。
struct node{
int Person1X,Person1Y,Person2X,Person2Y,Person3X,Person3Y; //X and Y coordinates of all 3 persons
int steps; //sum of distances covered by all 3 person to reach this state
}
在进行 BFS 时,我们可以设置一个约束条件,如果 steps>min(以 3 个人为顶点的三角形任意两条边的总和)返回;
if(Person1X=Person2X=Person2X)AND(Person1Y=Person2Y=Person3Y) return steps;