Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
一只蚂蚁看见了一盒糖。它爬到盒子的顶角进入内部。不幸的是,该盒子在与蚂蚁相对的底角只有很少的方糖。编写程序以帮助蚂蚁找到到达糖方的最短路径。
输入和输出格式:
输入由三个整数组成,分别对应于长方体的长度,宽度和高度。
输出应显示浮点中最短的距离。改小数点后两位。
样本输入和输出:
输入长度
5
输入宽度
6
输入高度
7
最短距离是14.81
我使用的公式
(1)平方根[(a + b)^ 2 + c ^ 2]中的最小值(2)平方根[(b + c)^ 2 + a ^ 2](3)平方根[(a + c)^ 2 + b ^ 2]
对于相同的输入,我得到的答案是13.42
我要去哪里错了?
即使那样,您也不会获得最短的距离。举个例子
假设立方体为1x1x1单位,其边沿x,y和z轴。为了使蚂蚁从(0,0,0)到达(1,1,1),它可以从
(0,0,0)->(0,1,1)->(1,1,1)
要么
(0,0,0)->(0,0.5,0.5)->(1,1,1)
第二条路径显然是较短的一条。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
一只蚂蚁看见了一盒糖。它爬到盒子的顶角进入内部。不幸的是,该盒子在与蚂蚁相对的底角只有很少的方糖。编写程序以帮助蚂蚁找到到达糖方的最短路径。
输入和输出格式:
输入由三个整数组成,分别对应于长方体的长度,宽度和高度。
输出应显示浮点中最短的距离。改小数点后两位。
样本输入和输出:
输入长度
5
输入宽度
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;
最佳答案
您在公式中犯了一个错误。您的浏览方式应为:
(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)->(0,1,1)->(1,1,1)
要么
(0,0,0)->(0,0.5,0.5)->(1,1,1)
第二条路径显然是较短的一条。
关于c++ - 长方体中的 Ant 找到最短路径:长方体的长度,宽度和高度都给出了。输出应显示浮点中最短的距离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30941517/
10-12 21:17