2015-06-19 59 views
-7

一隻螞蟻看到一盒糖。它爬到箱子的頂部角落裏面。不幸的是,箱子在螞蟻對面的角落裏只有幾個方糖。寫一個程序來幫助螞蟻找到到達方糖的最短路徑。Cuboid中的Ant找到最短路徑:給出長方體的長度,寬度和高度。輸出應顯示浮點的最短距離

輸入和Ouptut格式:

輸入由三個整數對應於長方體的長度,寬度和高度。 輸出應以浮點顯示最短距離。正確到小數點後兩位。

採樣輸入和輸出:

輸入長度輸入寬度輸入高度的最短距離爲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; 
+2

如果他們希望我們提供幫助,OP應該表現出一些努力。 – szczurcio

+0

請告訴我們你已經嘗試過了,它是如何失敗的,我們可能會提供幫助。:-) –

+0

我已經添加了我寫的代碼 – user3352106

回答

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)

顯然第二條路徑較短。

+0

@peterThanks很多! – user3352106