內容 :
愛斯基摩人給了你一堆線段,他想要問這些線段能組合出幾種多邊形呢?
對了 他說那些線段長度不會有重複的
輸入說明 :
有多組測試資料
每組測試資料佔一行,有一些以一個空白分開的正整數(不超過100個),並且行末不會有多餘的空白
若該組測試資料只含有0 ,請結束程式且不要輸出任何數字
(所有資料均不會大於1000000)
輸出說明 :
對每組測試資料輸出一個數
代表這些線段能組合出幾種多邊形 (多邊形為三邊或以上)
範例輸入 :
3 5 6 9 4
2 3 4 10
7 8 9
1 2 10
7 8
0
範例輸出 :
12
1
1
0
0
提示 :
在第一組測試範例中:
三角形:
3 4 5
3 4 6
3 5 6
4 5 6
4 6 9
5 6 9
四邊形:
3 4 5 6
3 4 5 9
3 4 6 9
3 5 6 9
4 5 6 9
五邊形:
3 4 5 6 9
Private Sub Form_Activate()
回覆刪除Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Do
Line Input #1, step
If step = 0 Then Exit Sub
'step = Replace(step, " ", "")
sstep = Replace(step, " ", "")
o = 1
n = 0
For i = 3 To Len(sstep)
Call ans(step, st, i, (o), n)
Next i
Print n
Loop
Close #1
Close #2
End Sub
Function ans(step, st, q, o, n)
If Len(st) < q Then
For i = o To Len(step)
ha:
stm = Mid(step, i, 1)
If stm = " " Then i = i + 1: o = o + 1: GoTo ha
If InStr(st, stm) = 0 Then Call ans(step, st & stm, q, o + 1, n)
o = o + 1
Next i
Else
Max = Val(Mid(st, 1, 1)): k = 0
For i = 1 To Len(st)
If Val(Mid(st, i, 1)) > Max Then Max = Val(Mid(st, i, 1))
k = k + Val(Mid(st, i, 1))
Next i
If k - Max * 2 > 0 Then
n = n + 1
End If
End If
End Function
還沒完成...
BY阿楊