c++课程设计——乘积最大

c++课程设计——乘积最大

ID:9381551

大小:847.50 KB

页数:25页

时间:2018-04-29

c++课程设计——乘积最大_第1页
c++课程设计——乘积最大_第2页
c++课程设计——乘积最大_第3页
c++课程设计——乘积最大_第4页
c++课程设计——乘积最大_第5页
资源描述:

《c++课程设计——乘积最大》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、课程设计报告实验内容:课程设计相关课程:信息系统开发语言(二)学期:2011-2012学年第2学期学时学分:64学时4学分专业班级:学  号:姓  名:指导老师:提交日期:2012年6月23日湖南商学院信息系统开发语言(二)课程设计信息系统开发语言课程设计一、课程设计目的C++是实践性很强的课程。课程设计是加强我们实践能力的一个强有力手段,要求我们在完成程序设计的同时能够写出比较规范的设计报告。通过课程设计要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力,对于我们基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著

2、的促进作用。课程设计主要是C++语言程序设计的实现。通过该课程设计,可以将学生课堂上掌握的理论知识与处理数据的业务相结合,以检验我们同学们掌握知识的宽度、深度及对知识的综合运用能力,同时提高和加强自己的计算机应用与软件开发能力,培养自己独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势。学习和掌握C++程序设计方法以及上机调试技巧,为今后学习其它专业课程打好坚实的基础,检测自己在这一学期对C++的学习及掌握情况。知道自己的不足,及时的弥补。为以后的学习打下一定的基础,也为自己以后如何制定学习计划做一铺垫。二

3、、问题描述题号8乘积最大总体需求:编写一个实现将一个的数字串,分成K+1个部分,使得这K+1个部分的乘积能够为最大。功能需求:设有一个长度为N的数字串,要求使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。如:有一个数字串:312,当N=3时,K=1时会有以下两种分法:1)3×12=362)31×2=62此时,符合题意的结果是31×2=62用户界面输入:湖南商学院信息系统开发语言(二)课程设计1)程序正常运行后,提示用户输入一行共有2个自然数N,K(2≤N≤40,1≤K≤6)。2)第二行是一个长度为N的

4、数字串。输出:相对于输入,应输出所求得的最大乘积(一个自然数)。提示与参考输入样例:421231输出样例:62三、问题分析此程序要求实现将长度为N的数字串,用K个乘号分成K+1个部分,使得这K+1个部分的乘积能够为最大。由题,数字串的顺序固定不变,乘号在不同的位置插入,使得数字乘积发生变化,并取其最大值输出。设num=3456,n=4,k=3,这表示要将4位的十进制整数3456分为3段。划分方法为:3×4×56=672,3×45×6=810,34×5×6=1020,而第3种划分才是最佳划分。本问题属于求最优值的一类问题。假设第k个乘号插

5、入的位置为p,取出由后n-q个数字组成的数字串,可能包含任意个(不多于k个)乘号。若能求出任意子串包含k-1个乘号的最大乘积,则只需穷举第k个乘号的插入位置q,该乘号将数字串分成前后两段,后半段包含k-1个乘号,其最大值根据假设已经算出,将它与前半段的值相乘得到第k个乘号在位置q时的乘积。取所有的第k个乘号不同插入方案中的最大乘积即为问题“后n-q个数字组成的数字串插入k-1个乘号”的解。假设数字字符串为aa…a(2<=n<=40),设f[i,j]表示在后i位数中插入j个乘号所得的最大值,p(1,n,k)为从l到n加入k个乘号的最大乘积

6、值。(1)K=1时,一个乘号可以插在a1a2…a中的n-1个位置,这样就得到n-1个子串的乘积:a*a…a,aa*a…a,…,aa…a*a此时的最大值p(1,n,k)=max{a*a…a,aa*a…a,…,aa…a*a}湖南商学院信息系统开发语言(二)课程设计(2)K=2时,二个乘号可以插在aa…a中n-1个位置的任两个地方,这样总共会产生个乘积。把这些乘积分个类,便于观察规律。Case1:a*a*a…a,a*aa*…a,…,a*a…a*a因后一个乘号位置不变,要使这些乘积最大,就要找出在前n-1个数中插入一个乘号的最大值。设符号f[n

7、-1,1]为在后n-1个数中插入一个乘号的最大值,则Case1的最大值为a*f[n-1,1]Case2:aa*a*a…a,aa*aa*…a,…,aa*aa…a*a因后一个乘号位置不变,要使这些乘积最大,就要找出在前n-2个数中插入一个乘号的最大值。设符号f[n-2,1]为在后n-2个数中插入一个乘号的最大值,则Case2的最大值为aa*f[n-2,1]同理,Case3的最大值为aaa*f[n-3,1]……Case(n-2)的最大值为aa…a*f[2,1]此时的最大值p(1,n,k)=max{Case1,Case2,…,Case(n-2)

8、}(3)由此得出K=i时,p(1,n,k)=max{a*f[n-1,i-1],aa*f[n-2,i-1],aa*f[n-3,i-1],…,aa…a*f[n-i,i-1]}由上述可知,第k个乘号的插入位置q,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。