这个简单算法的名称是什么?

时间:2018-06-25 00:41:41

标签: algorithm

有几个人,叫他们A,B,C。A和B之间的重量差为20公斤。 B和C之间的重量差为30千克。 A和C有什么区别?

我正在寻找最快的方法。用C / C ++实现确实很有帮助。

2 个答案:

答案 0 :(得分:1)

1)一般而言,“差异”是针对此问题的两种解决方案:

A = 60, B = 80, C = 110 => diff = 50
A = 60, B = 80, C = 50 => diff = 10
It's because diff(X,Y) = abs(X-Y)

2)我认为您在谈论传递性或https://en.wikipedia.org/wiki/Transitive_relation

3)另外,您可以参考Dijkstra / Floyd-Warshall算法来计算X和Y之间的最短距离。此处的完整列表:https://en.wikipedia.org/wiki/Shortest_path_problem

答案 1 :(得分:-1)

这不需要算法,只需一些数学运算即可:

B-A = 20  //Difference from A to B
C-B = 30  //Difference from B to C

(B-A) + (C-B)
    = B-A+C-B      //Notice that the +B and -B will cancel
    = C-A          //Difference from A to C

由此可见,您只需将A到B的差与B到C的差相加即可得到A到C的差。

注意:如果实施此方法,请当心否定因素(例如,如果A与B的差为20,则B与A的差为-20)。