标题:[求助]找钱的动态规划
只看楼主
yuucyf
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-9-15
 问题点数:0 回复次数:0 
[求助]找钱的动态规划

给你一定的钱,(如64块)找零钱,只能在(25,10,5,1,这些硬币面值当中找),如果找的出(当然这里都可以找的出),就求出一共最少需要几枚硬币(就是最优值)! 下面的程序(当然是用动态规划算法实现)可以找的出最少需要几枚硬币!!! 下面是代码,大家往下看!!! #include<iostream> #include<stdlib.h> using namespace std ; void coin(int n , int m , int a[] , int c[]) ; void coin(int n , int m , int a[] , int c[]) // n为硬币面值的个数,m为要你找的钱,a数组是存放各 个硬币面值! { c[0] = 0 ; for(int i=1 ; i<=m ; i++) { int min = m ; for(int j=1 ; j<=n ; j++) / { if(i>=a[j] && c[i-a[j]] < min) min = c[i-a[j]] ; } c[i] = min + 1 ; } }

int main() { int a[]={0 , 25 , 10 , 5 , 1} ; int c[65]={0} ; int b=64 ; coin(4 , 64 , a , c) ; cout << "最优解就是最少值为:" << c[64] << endl ; for(int i=0 ; i<65 ; i++) cout << c[i] << " " ; system("pause") ; }//(这个算法能找出最优值,结果为7) 问题1是: 谁能在这基础上在修改一下,能知道输出结果的值,分别来自哪几个硬币面值! 如找64块钱的零钱,结果是输出7!! 要求知道结果这7来自25(2枚),10(1枚),5(0枚),1(4枚)! 各位大虾帮一下忙,在这基础上改进一下!!!! 问题2是:如果遇到找开的情况怎么办?(如要3块钱的零钱,在(25,10,5,2)) 编程实现!! (表达的不好,但是如果知道动态规划算法,都应该明白!) 高手帮忙!!!!!!

搜索更多相关主题的帖子: 动态规划 int 硬币 找钱 coin 
2005-10-21 12:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-30860-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015647 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved