📄 解题报告_韩霖.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 + -