为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

最少硬币问题

2017-11-17 6页 doc 17KB 37阅读

用户头像

is_954223

暂无简介

举报
最少硬币问题最少硬币问题 系别 专业 计算机科学与班姓名 技术 级 课程名算法设计与分析 课程类型 学时数 称 实验名最少硬币问题 称 实验目的: 理解动态规划算法的概念 掌握动态规划算法的基本要素 熟练掌握动态规划算法的算法思想和实现的步骤 能够运用动态规划算法去解决一些实际相关的问题 内容和步骤: 实验内容: 设有n 种不同面值的硬币,各硬币的面值存于数组T,1:n,中。 现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于 数组Coins,1:n,中。 对任意钱数0?m?20001,设计一个用最少...
最少硬币问题
最少硬币问题 系别 专业 计算机科学与班姓名 技术 级 课程名算法设计与分析 课程类型 学时数 称 实验名最少硬币问题 称 实验目的: 理解动态规划算法的概念 掌握动态规划算法的基本要素 熟练掌握动态规划算法的算法思想和实现的步骤 能够运用动态规划算法去解决一些实际相关的问题 内容和步骤: 实验内容: 设有n 种不同面值的硬币,各硬币的面值存于数组T,1:n,中。 现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于 数组Coins,1:n,中。 对任意钱数0?m?20001,设计一个用最少硬币找钱m的方法。 实验要求:要求问题描述用动态规划算法来实现。 运行结果: 3 1 3 2 3 5 3 18 5 源程序代码: #include using namespace std; int main() { cout<<" ------------------------------------------------------------- "<
| "<>ch; int n,i,m,t,v,count = 0; cout<<"输入货币种类:"<>n; int *value=new int[n+1],*value1=new int[n+1]; int *q=new int [n+1]; for(i=1;i<=n;i++) { cout<<"输入"<>value[i]; cout<<"输入"<>q[i]; value1[i]=value[i]*q[i]; count = count + value1[i]; } while(ch != 'q') { if(ch == 's') { cout<<"请输入要兑换的货币面值:"<>m; if(count > m) { int *way=new int [m+1]; int *way1=new int [m+1]; way1[0]=way[0]=0; for(i=1;i<=m;i++) { if(value1[1]>=i&&i%value[1]==0) 2 课程实践报告书 { way1[i]=way[i]=i/value[1]; } else { way1[i]=way[i]=0; } } int j; for(j=2;j<=n;j++) { for(i=value[j];i<=m;i++) { t=1; while(t<=q[j]&&value[j]*t<=i) { if((i-value[j]*t)&&way[i-value[j]*t]==0) { t++; continue; } else { v=t+way[i-value[j]*t]; } if(way1[i]==0||way1[i]>v) { way1[i]=v; } t++; } } for(i=1;i<=m;i++) { way[i]=way1[i]; 3 课程实践报告书 } } if(way[m]==0) { way[m]=-1; } cout<<"需要的最少硬币数:"<>ch; } } 实验: 本次实验中,刚开始对动态规划算法的两个基本要素,既最优子结构性 及子问题重叠性的寻找存在一定的问题,动态规划算法是一种自底向上求解的 过程。 成绩 批阅教师 批阅日期 4
/
本文档为【最少硬币问题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索