我需要一些帮助来完成我给出的任务背后的数学。问题是计算从蚂蚁到糖果的距离。糖果总是在盒子顶部,蚂蚁可以在任何地方,但两侧。蚂蚁可以爬到顶部和两侧,但不能飞。它们将蚂蚁和糖果的坐标作为连续6个数字给你。前3个是蚂蚁,接下来3个是糖果。我遇到的问题是第3个样本输入(0 0 0 5 4 3.0)。他们如何获得8.60个单位作为答案?当距离向上为3并且到角落的距离为6.40时,总距离应为9.40。我的猜测是他们在上升时切入角落,但我不知道如何制定一个公式来找到最短的长度。感谢您的帮助:如果您需要更多信息,请致电。
方框是(5,4,3)x,z,y格式。
Sample Input:
3 1 3 3 3 3
2.25 0 2 2.5 2 3
0 0 0 5 4 3.0
0 4 3 5 0.0 3
5 0 3 5 4.00 3
Sample Output:
Shortest distance = 2.00 units
Shortest distance = 3.01 units
Shortest distance = 8.60 units
Shortest distance = 6.40 units
Shortest distance = 4.00 units
答案 0 :(得分:1)
首先,正如gap_j所指出的那样,这显然是在错误的领域。也就是说,答案在于微积分 - 你必须将导数设置为零并确定最小值。根据您提供的尺寸和一个或两个推断,框在x轴上为5个单位,在y轴上为4个单位,在z轴上为3个单位。这意味着,正如您所指出的那样,首先沿z轴行进的最短距离将是9.40单位:
p(z)= z + sqrt(x 2 + y 2 )
关于首先沿轴直接行进,还有另外两种选择; x-first和y-first:
p(x)= x + sqrt(y 2 + z 2 )
p(y)= y + sqrt(x 2 + z 2 )
这些路径的值分别为10(精确)和9.83。
为了实现问题中给出的p = 8.6
,沿着x轴必须有一些距离 a ,这样:
p(a)= sqrt((x - a) 2 + z 2 )+ sqrt(y 2 + a 2 )
沿y轴有一段距离 b ,这样:
p(b)= sqrt((y - b) 2 + z 2 )+ sqrt(x 2 + b 2 )
且值p(a)
或p(b)
必须小于直接沿轴行进。 p(a)
有无数的这样的值。
由于这可能是微积分课的作业问题,我会留下找到你的衍生物,但公式是提供的。只有一个变量,所以这不应该特别困难。当然,这些可以概括,计算结果和确定较短路径是一项相当简单的任务。