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
我要去哪里错了?

    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