算法课实验报告2.2(动态规划法)

  • 格式:doc
  • 大小:247.50 KB
  • 文档页数:4

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告2.2(递归法)

学号:201208070103 姓名:陈明班级:智能1201

第16 周

课程名称算法设计与分析实验课时 2

实验项目整数因子分解问题实验时间2015年1月10日

实验目的对于给定的正整数n,计算n共有多少种不同的分解式。实验环境Eclipse Luna, Java JDK1.7, Windows 8.1

实验内容(算法、程序、步骤和方法)一、算法策略

动态规划法。把1~number的约数预先存起来,需要用得时候,直接在前面取得。

二、算法设计(步骤)

1)把number的约数全部计算出来,存储在factor数组里面。

2)使用快速排序法QuickSort把factor按升序排序

3)使用动态规划法。把0~number的分解式的个数存在recordNum数组里面。

三、复杂度分析

1)时间复杂度:首先时计算约数因子,其次是快速排序,最后是动态规划,这三步伟主要耗时。

故时间复杂T(n)=O(n)+O(n*log n)+O(k) (其中k为number 的约数个数,故为常数级别)。

故T(n)

故该算法的时间复杂度为 O(n*log n)

2)空间复杂度:O(n)

1)从控制台console输入数字,java封装类Scanner获得输入流;

2)获得的数字,赋值给number

数据记录

和计算

1)number=12时:

2)number=11时:

结论

(结果)

3)number=888888时:

小结1)动态规划法相对于递归法来说,当输入规模很大时,应该考虑动态规划法;

2)进行两个种方法的对比:

Number=888888

动态规划法:

递归法:

T(动态规划)=30毫秒,T(递归策略)=263毫秒

显然,从耗时上来看,动态规划法要优于递归策略!

指导老师

评议

成绩评定:指导教师签名: