动态规划法实验心得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
竭诚为您提供优质文档/双击可除动态规划法实验心得
篇一:动态规划法实验报告
数学与计算机学院实验报告
一、实验项目信息
项目名称:动态规划法实验实验时间:20XX/04/27实验学时:03学时
实验地点:工科楼二、实验目的及要求
理解动态规划法的设计思想、掌握动态规划法的求解步骤、掌握用动态规划法解题的算法框架。
三、实验环境
计算机windows7
myeclipseprofessional20XXJAVA8
四、实验内容及实验步骤
动态规划法求解最大子段和问题:
划分:先对规模k的问题求解然后再求k+1问题(既k=1
然后k=2......)代码:
#Adder.java
packagecom.chanheng;
publicclassAdder{
int[]b=newint[100];//定义辅助数组intmax;//从辅
助数组里面找出最大的值的变量
publicintadd(int[]a){b[0]=a[0];max=b[0];for(inti=1;
i if(b[i-1]>0)
b[i]=b[i-1]+a[i];elseb[i]=a[i];if(b[i]>max)max=b[i];
}
returnmax;}/**
*找出组成最大字段和的段*@parama*/
publicvoidgetArray(int[]a){inti,j,k,sum=0;int[]c=ne wint[100];for(i=0;i while(j>=0){sum+=a[j];
if(sum==max)break;j--;}
k=i-j;
for(intx=0;x }
for(intx=0;x system.out.print(c[x]+"");
}}
}
#Tester.java
packagecom.chanheng;importjava.util.scanner;
publicclassTester{publicstaticvoidmain(string[]args ){//ToDoAuto-generatedmethodstub
newscanner(system.in);
int[]a=newint[10];
system.out.println("pleaseinput10number:");for(inti =0;i }
(:动态规划法实验心得) Adderad=newAdder();
system.out.println("最大字段和是:
"+ad.add(a));system.out.println("**最大字段和的组成数组*******");ad.getArray(a);}
}
五、实验结果分析
结果正确并能找出最大字段和的部分。
六、实验总结
通过这次实验可以进一步了解动态规划法的原理和求解工作原理。深入理解如何对一个问
题进行划分成子问题。动态规划法一般是使用循环来求
解,从规模小的问题求解然后再对规模次大的问题求解(利用已有的次小问题的答)。求解过程中可能使用到辅助空间或数组。
七、教师评价
篇二:动态规划实验报告
实验报告
(20XX--20XX年度第一学期)
名称:运筹学上机实验
题目:院系:数理系
班级:
学号:
学生姓名:
指导教师:
设计周数:1周
成绩:
日期:20XX年11月20
日
一、实验的目的与要求
1.培养信息类学生面向对象编程技术的基本能力。
2.掌握动态规划资源分配基本算法。
3.了解面向对象编程的基本概念,并用程序编写单纯形法,解决一定的应用问题。
二、实验
预期实验成果要求
用程序编写简单的动态规划资源分配计算程序,并能用其解决简单的动态规划资源分配问题。
分析实现过程
1
(1)把矩阵输入程序;
(2)利用for循环,找到最优值;
(3)记录最优值,再次利用for循环,找出每一个满足最优值的解,输出;
系统实现
(1)利用for循环,找到最优值
publicdoublemax(double[,]matrix)
{
doubletemp=0;
for(inti=0;i for(intm=0;i+m
for(intn=0;i+m+n {
Rt=matrix[i,0]+matrix[m,1]+matrix[n,2];
if(Rt>temp)
temp=Rt;
}
returntemp;