一只蚂蚁看到一盒糖。它爬到盒子的顶角进入里面。不幸的是,盒子在与蚂蚁相对的底角只有很少的糖块。编写一个程序来帮助蚂蚁找到到达糖块的最短路径。
输入和输出格式:
输入由三个整数组成,对应于长方体的长度,宽度和高度。 输出应显示浮点的最短距离。正确到两位小数。
示例输入和输出:
输入长度 五 输入宽度 6 输入高度 7 最短距离是14.81
我使用的公式 (1)平方根[(a + b)^ 2 + c ^ 2]中的最小值(2)平方根[(b + c)^ 2 + a ^ 2](3)平方根[(a + c)^ 2 + b ^ 2]
我得到相同输入的答案是13.42 我哪里错了?
s1=x+y;
s2=y+z;
s3=x+z;
s1sq=s1*s1;
s2sq=s2*s2;
s3sq=s3*s3;
x2=pow(x,2.0);
y2=pow(y,2.0);
z2=pow(z,2.0);
full1=s1sq+z2;
full2=s2sq+x2;
full3=s3sq+y2;
sq1=sqrt(full1);
sq2=sqrt(full2);
sq3=sqrt(full3);
min=sq1;
if(sq1<sq2 && s1<sq3)
min=sq1;
if(sq2<sq3 && sq2<sq1)
min=sq2;
else min=sq3;
Printf("%.2f",min);
return 0;
答案 0 :(得分:1)
你在公式中犯了一个错误。你在看它的方式,你应该写:
(a + sqrt(b^2 + c^2))
(b + sqrt(a^2 + c^2))
(c + sqrt(a^2 + b^2)).
即便如此,你也不会得到最短的距离。举个例子, 假设立方体是1x1x1单位,沿x,y和z轴有边。为了使蚂蚁从(0,0,0)到(1,1,1),它可以从中获得 (0,0,0) - &gt; (0,1,1) - &gt; (1,1,1) 要么 (0,0,0) - &gt; (0,0.5,0.5) - &gt; (1,1,1)
第二条道路显然是较短的道路。