明天就要去遠足了,小綠正打包她的行李,她家有下列五種零食:
名稱 | 大小 | 滿足感 |
海苔 | 3 | 4 |
花生米 | 4 | 5 |
點心麵 | 7 | 10 |
洋芋片 | 8 | 11 |
巧克力 | 9 | 13 |
而這五種零食一定要一整包放進背包不可以打散,現在有一個大小為 N (N<=100)的背包要用來裝零食,請問她可以獲得的最大滿足感為多少?
輸入1:17
輸出1:24
輸入2:100
輸出2:144
(網路參考:http://www.tcgs.tc.edu.tw/~sagit/cpp/q12.htm)
學長做過:http://chscvb.blogspot.com/2010/08/blog-post.html#comments
(網路參考:http://www.tcgs.tc.edu.tw/~sagit/cpp/q12.htm)
學長做過:http://chscvb.blogspot.com/2010/08/blog-post.html#comments
對遞迴又愛又恨
回覆刪除這樣寫沒有錯
可是會跑很久=口=
Dim M3 As Byte
Dim M4 As Byte
Dim M7 As Byte
Dim M8 As Byte
Dim M9 As Byte
Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
M3 = 4: M4 = 5
M7 = 10: M8 = 11
M9 = 13
Do While Not EOF(1)
List1.Clear
List1.AddItem 0
Input #1, X
Call ABC(X, 0)
Print #2, List1.List(0)
Loop
Close #2
Close #1
End
End Sub
Sub ABC(ByVal A, ByVal ans)
If A = 0 And ans > Val(List1.List(0)) Then
List1.Clear
List1.AddItem ans
Else
If A >= 9 And (A >= 12 Or A = 9) Then Call ABC(A - 9, ans + M9)
If A >= 7 And (A >= 10 Or A = 7) Then Call ABC(A - 7, ans + M7)
If A >= 8 And (A >= 11 Or A = 8) Then Call ABC(A - 8, ans + M8)
If A >= 3 And (A >= 6 Or A = 3) Then Call ABC(A - 3, ans + M3)
If A >= 4 And (A >= 7 Or A = 4) Then Call ABC(A - 4, ans + M4)
End If
End Sub
佑好,
回覆刪除1.你這題這樣做,是屬於暴力型的,將所有的可能全列出來了。
當然會慢些。不過,應該是正確的。
如果你去算一下,所謂的「每單位滿足感」會不會有幫助呢?
2.你的條件寫的很亂,像 A >= 3 And (A >= 6 Or A = 3)
那什麼時候會滿足呢?
a=3,6,7,8,9,...
所以,你的條件是多餘的,直接寫後面那個不是一樣嗎?
熊掌好,
回覆刪除我有算各單位的[滿足感/大小]
用select來挑
總會與答案少1
好像是ㄝ,
原本是想要多一點條件來去掉不可能的答案。
謝老師。