?? 解題報告_韓霖.htm
字號:
1151 解 題 報 告<br> 韓霖<br> 這道題說的是給你一個Piggy Bank可以往里面放硬幣。然后告訴你它裝硬幣前和裝硬幣后的<br>質量E, F,以及硬幣的種類N,每種硬幣的質量W和面值P。然后求Piggy Bank在給定的E,F條<br>件下最少能裝多少面額的硬幣。<br> 這是一道動規的題,很像。我的具體做法是先用一個整型變量iWheight = F – E,表示硬幣<br>的總質量,然后開一個數組Wheight[ 100001 ],Wheight[ n ] 表示當硬幣質量為n時的最少<br>面額。給Wheight的第零個元素賦值為0,其它元素賦值為-1,表示當前找不到滿足條件的硬幣<br>組合。用一個iCoin[ 5000 ][ 2 ]存放硬幣的信息,iCoin[ n ][ 0 ]表示第n種硬幣的面值,<br>iCoi[ n ][ 1 ]表示第n種硬幣的質量。然后可以知道Wheight[ m ]與前面元素的關系為Whei<br>ght[ m ] = Min( Wheight[ m – iCoin[ 0,1……N ][ 1 ] ] + iCoin[ 0,1……N ][ 0 ] )<br> 。最后,如果Wheight[ iWheight ] == -1,則輸出 ” This is impossible. ”,否則輸出<br>Wheight[ iWheight ]的值。源代碼如下:<br>#include <stdio.h><br>int main()<br>{<br> long int T, E, F, Weight[ 100001 ], P, W, n, m, iWeight, N, iCoin[ 5000 ][ 2 ], <br>a, iMin;<br> scanf ("%ld", &T);<br> for (n = 0; n < T; n++)<br> {<br> for (m = 0; m <= 10000; m++)<br> Weight[ m ] = -1;<br> scanf ("%ld%ld", &E, &F);<br> iWeight = F - E;<br> scanf ("%ld", &N);<br> for (m = 0; m < N; m++)<br> scanf ("%d%d", &iCoin[ m ][ 0 ], &iCoin[ m ][ 1 ]);<br> Weight[ 0 ] = 0;<br> for (m =1 ; m <= iWeight; m++)<br> {<br> iMin = 300000000; // 注意iMin的初值<br> for (a = 0; a < N; a++)<br> {<br> if (m - iCoin[ a ][ 1 ] >= 0)<br> {<br> if (Weight[ m - iCoin[ a ][ 1 ] ] != -1)<br> if (iMin > Weight[ m - iCoin[ a ][ 1 ] ] + iCoin[ a ][ 0 ])<br> iMin = Weight[ m - iCoin[ a ][ 1 ] ] + iCoin[ a ][ 0 ];<br> }<br> }<br> if (iMin != 300000000)<br> Weight[ m ] = iMin;<br> }<br> if (Weight[ iWeight ] > 0)<br> printf ("The minimum amount of money in the piggy-bank is %d.\n", Weight[ iWei<br>ght ]);<br> else<br> printf ("This is impossible.\n");<br> }<br> return 0;<br>}<br>還有一點值得注意。請注意iMin的初值。我當時開始給iMin的初值為30000,因為我以前做類<br>似的題一直都用的30000。結果這道題測試數據過了,可提交上去老WA 。后來才發現根據題中<br>E, F和W, P的取值范圍,硬幣的總面額是有可能大于30000的,30000不能大于Wheight[ n ]所<br>有的可能值,就會發生錯誤。后來,把iMin的初值改為300000000后,就AC了。這道題再一次<br>提醒了我,有時候經驗很重要,但不能完全憑經驗,還要根據具體的題意來做題,不能疏忽大<br>意。<br><font style='font-size:12pt'>
<br>
==============================================<br>
<a target=_blank href='http://vip.163.com' title='http://vip.163.com'><font color=green><b>安全穩定大容量,收費伊妹兒免費30日完美體驗~</b></a><br>
<a target=_blank href='http://mail.163.com' title='http://mail.163.com'><font color=red><b>中國最大的免費郵箱在等你 25兆空間 4兆附件!</b></a><br>
<a target=_blank href='http://popo.163.com' title='http://popo.163.com'><font color=green><b>點擊網易泡泡驚喜無限 全免費手機短信任你發!</b></a><br><br>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -