2010年10月19日 星期二

黑暗土地

內容 : 
黑暗大陸的野人們突然四散開來,然後一瞬間大家都停了下來,靜止不動。部落首領走了出來,告訴努曼諾爾人這些野人們的座標位置,要求努曼諾爾人選出其中三個,而選中的那三個野人所圍出來的土地就送給努曼諾爾人。現在,請從首領提供的座標資訊回答:最大的三角形土地面積可以是多少。若三個點的座標為 (a,b), (c,d), (e,f),則這三個點圍成的三角形面積為:
| 0.5*(ad+cf+be-bc-de-af) |
輸入說明 :
有多組測試資料,以EOF結尾。
輸入的第一行是一個正整數N (3<=N<=200),表示平面上有多少野人。接下來有N行,每行兩個整數,其中第k行代表第k個野人所在的座標 (Xk,Yk)
輸出說明 :
輸出可以取得的最大三角形土地面積,請四捨五入到小數點後兩位。
範例輸入 :
0 0 
0 1 
1 0 
1 1 
1 1 
5 3 
2 9
範例輸出 :
0.50 
15.00

2 則留言:

  1. Dim xx(200) As Integer
    Dim yy(200) As Integer
    Public Sub Form_Load()
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Do Until EOF(1)
    Input #1, n
    sumx = 0: sumy = 0
    For i = 1 To n
    Input #1, x, y
    sumx = sumx + x
    sumy = sumy = y
    xx(i) = x
    yy(i) = y
    Next i
    sumx = sumx \ n
    sumy = sumy \ n
    For i = 1 To n - 1
    For j = i + 1 To n
    k = (sumx - xx(i)) ^ 2 + (sumy - yy(i)) ^ 2
    kk = (sumx - xx(j)) ^ 2 + (sumy - yy(j)) ^ 2
    If kk > k Then
    st = xx(i): xx(i) = xx(j): xx(j) = st
    st = yy(i): yy(i) = yy(j): yy(j) = st
    End If
    Next j
    Next i
    ans = Abs(0.5 * (xx(1) * yy(2) + xx(2) * yy(3) + xx(3) * yy(1) - yy(1) * xx(2) - yy(2) * xx(3) - xx(1) * yy(3)))
    Print Format(ans, "0.00")
    Loop
    Close #2
    Close #1
    End Sub

    BY阿揚

    回覆刪除
  2. 似乎OK小白的呢?

    回覆刪除