有几个人,叫他们A,B,C。A和B之间的重量差为20公斤。 B和C之间的重量差为30千克。 A和C有什么区别?
我正在寻找最快的方法。用C / C ++实现确实很有帮助。
答案 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)。