一、题目编号:
Problem F
二、简单题意:
Dong MW喜欢买东西的时候给刚刚好的钱,不找零。给出多组测试数据,第一个数据为书本的价钱,接下来五个数分别为1,5,10,50,100角的纸币的数量,求买这本书需要的最少的纸币数和最多的纸币数,如果不能不找零买这本书则输出“-1 -1”。
三、解题思路形成过程
要使纸币的数量最少,则需要尽可能选取大面额的纸币,从大面额纸币开始判断,可以选就在价钱中减去这部分,直至价钱减少至0。此时花费的纸币数量即为最小值。如果左右面额纸币判断结束价格都无法变为0,则无法买这本书,输出“-1 -1”。要使纸币的数量最大,只需让总钱数减去书的价格所需要的数量最少,算法同上。
四、感想
题本身不难,但是调了好久,好几个细节地方没有注意到导致浪费了很多时间。还是要多注意细节啊!
五、AC代码
#include<iostream>using namespace std;
int money[]={1,5,10,50,100};
int change(int price,int m[5])
{
for(int i=4;i>=0;i--)