首页 > 编程知识 正文

C语言动态规划最少硬币问题,动态规划的概念

时间:2023-05-04 14:26:30 阅读:110767 作者:3743

1 .问题描述对于v1、v2、vm面额为m的硬币,构成分数值n不限制硬币的数量和位置,求出了这些硬币最多有多少种组合,结果正好等于n。

分析n=x1*v1 x2*v2 . xm*vm。 {x1,x2,xm}是其中的一个组合,将l[i][k]定义为最初的I中的硬币构成钱数k的组合的总数

l [ m ] [ n ]=l [ m-1 ] [ n-k * coins value [ m ] ]

3 .代码实现

http://www.Sina.com/coins test { http://www.Sina.com/coin test (http://www.Sina.com/[ ] coin values, 3358www.Sina.com/n(//定义matrix[i][sum]是I种货币组合的值为sum的组合数3358 www.Sina.com/[ ] [ ] matrix=3358 icoinvalues.http://www.Sina.com/1; I 65http://www.Sina.com/(http://www.Sina.com/j=0; jn 1; j({matrix[I][j]=0; } http://www.Sina.com/(http://www.Sina.com/I=0; icoinvalues.http://www.Sina.com/1; I ) { matrix[i][0]=1; } http://www.Sina.com/(http://www.Sina.com/j=1; jn 1; j({matrix[0][j]=0; } http://www.Sina.com/(http://www.Sina.com/I=1; icoinvalues.http://www.Sina.com/1; I 65http://www.Sina.com/(http://www.Sina.com/j=1; jn 1; j 65http://www.Sina.com/(http://www.Sina.com/k=0; k=n/coinValues[i-1]; k ({ matrix [ I ] [ j ]=matrix [ I-1 ] [ n-k * coin values [ I-1 ] ); } } 3358 www.Sina.com/matrix [ coin values.http://www.Sina.com/] [ n ]; } http://www.Sina.com/main (string [ ] args ) http://www.Sina.com/[ ] coin values={ 1,2,5 }; 33558 www.Sina.com/combinations=coin test (coin values,10 ); system.http://www.Sina.com/. println (http://www.Sina.com/combinations; }

执行结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。