长方体中的蚂蚁找到最短路径:给出长方体的长度,宽度和高度。输出应显示浮点的最短距离

时间:2015-06-19 15:08:10

标签: c++ c algorithm

一只蚂蚁看到一盒糖。它爬到盒子的顶角进入里面。不幸的是,盒子在与蚂蚁相对的底角只有很少的糖块。编写一个程序来帮助蚂蚁找到到达糖块的最短路径。

输入和输出格式:

输入由三个整数组成,对应于长方体的长度,宽度和高度。 输出应显示浮点的最短距离。正确到两位小数。

示例输入和输出:

输入长度 五 输入宽度 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;

1 个答案:

答案 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)

第二条道路显然是较短的道路。