PAT 1048.Find Coins

来源:互联网 发布:防鼠公司知乎 编辑:程序博客网 时间:2024/05/22 15:01

因为硬币面值是不超过500的正整数,所以只需开一个长度为500的数组,保存每种面值的硬币的数量。

不妨叫它num[ ],num[i]=面值为i的硬币的数量

需要凑出的钱假设为target

for(i=1;i<=target/2;i++)

if(  num[i]>0  &&  num[target-i]>0 )

有解,解为( i , target-i )

大致上是这么个意思。复杂度约为500;for循环里注意控制一下,下标不要超出数组边界。

还有种略特殊的情况,也就是i=target-i的时候,两枚硬币面值一样,这时候需要满足num[i]>=2才行。

代码懒得找,就不附代码了。


0 0
原创粉丝点击