【问题标题】:Ant in a Cuboid find shortest path: length, width and height of a cuboid are given. Output should display the shortest distance in floating point [closed]长方体中的蚂蚁找到最短路径:给定长方体的长度、宽度和高度。输出应以浮点显示最短距离[关闭]
【发布时间】:2015-06-19 15:08:09
【问题描述】:

一只蚂蚁看到了一盒糖。它爬到盒子的顶角进入。不幸的是,盒子在蚂蚁对面的底角只有几块方糖。编写程序帮助蚂蚁找到到达方糖的最短路径。

输入输出格式:

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

示例输入和输出:

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

【问题讨论】:

  • 如果 OP 希望我们提供帮助,他们应该付出一些努力。
  • 请告诉我们您已经尝试过什么,它是如何失败的,我们或许可以提供帮助。:-)
  • 我已经添加了我写的代码
  • 你把 full1 变成了什么类型 > @user3352106

标签: c++ c algorithm


【解决方案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) -> (0,1,1) -> (1,1,1) 或者 (0,0,0) -> (0, 0.5, 0.5) -> (1,1,1)

显然第二条路径较短。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 2020-05-19
    相关资源
    最近更新 更多