实验报告2 动态规划Word文档格式.docx

上传人:b****5 文档编号:19709712 上传时间:2023-01-09 格式:DOCX 页数:8 大小:91.32KB
下载 相关 举报
实验报告2 动态规划Word文档格式.docx_第1页
第1页 / 共8页
实验报告2 动态规划Word文档格式.docx_第2页
第2页 / 共8页
实验报告2 动态规划Word文档格式.docx_第3页
第3页 / 共8页
实验报告2 动态规划Word文档格式.docx_第4页
第4页 / 共8页
实验报告2 动态规划Word文档格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

实验报告2 动态规划Word文档格式.docx

《实验报告2 动态规划Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验报告2 动态规划Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。

实验报告2 动态规划Word文档格式.docx

1.阅读参考代码,理解动态规划算法的主要数据结构;

2.比较动态规划算法和分治算法的异同;

3.比较规划算法和备注算法的异同;

4.针对4.6,4.7两节问题,在已有动态规划算法基础上,编程求解最优解;

【实验原理】

(含相关算法流程图,可写多页)

【实验环境】

微型计算机;

Windows7操作系统;

Codeblocks、vs2012集成开发环境。

【实验过程与结果】

(附主要源码及运行结果截图)

//最长单调子序列问题

#include<

iostream>

#defineMAXLENGTH1000

usingnamespacestd;

intLongestIncreasingSubsequence(intX[],intn,intc[],intline[])

{

intpath[MAXLENGTH];

for(inti=0;

i<

n;

++i)

{

path[i]=i;

}

c[0]=1;

//输入数组

for(inti=1;

c[i]=1;

for(intj=0;

j<

i;

++j)

if(X[i]>

=X[j]&

&

c[j]+1>

c[i])

c[i]=c[j]+1;

path[i]=j;

intmax=0;

intend=-1;

//得到最大和获得最长递增子序列的最后一个元素的索引

if(c[i]>

max)

max=c[i];

end=i;

inti=1;

//得到的最长递增子序列

line[0]=X[end];

while(path[end]!

=end)

line[i++]=X[path[end]];

end=path[end];

returnmax;

}

intmain()

intn;

intX[MAXLENGTH];

intc[MAXLENGTH];

intline[MAXLENGTH];

while(cin>

>

n,n!

=0)

cin>

X[i];

intmax=LongestIncreasingSubsequence(X,n,c,line);

cout<

<

"

LongestIncreasingSubsequence'

sLength:

"

max<

endl;

for(inti=max-1;

i>

=0;

--i)

line[i]<

;

//数字三角问题

#include 

cmath>

string.h>

using 

namespace 

std;

int 

main() 

n;

cin 

arr[n+1][n+1];

res[n+1][n+1];

memset(arr, 

-1, 

sizeof(int));

memset(res, 

for 

(int 

1;

i++) 

i;

j++) 

arr[i][j];

// 

初始化res结果数组 

res[n][i] 

arr[n][i];

i--) 

动规填表 

res[i][j] 

max(res[i+1][j], 

res[i+1][j+1]) 

/* 

打印res数组 

cout 

endl;

*/ 

res[1][1] 

//最大路径和值 

找出靠右路径 

arr[1][y] 

//顶部最大 

2;

从上往下找,只需要比较 

和 

y+1,相应输出 

“最大值下标对应的” 

原值 

if 

(res[i][y] 

res[i][y+1]) 

arr[i][y+1] 

y+1;

//更新y 

}else{ 

arr[i][y] 

return 

0;

【实验小结】

1.分治法与动态规划主要共同点:

二者都要求原问题具有最优子结构性质,都是将原问题分而治之,分解成若干个规模较小(小到很容易解决的程序)的子问题.然后将子问题的解合并,形成原问题的解.

2.分治法与动态规划实现方法:

①分治法通常利用递归求解.

②动态规划通常利用迭代法自底向上求解,但也能用具有记忆功能的递归法自顶向下求解.

3.分治法与动态规划主要区别:

①分治法将分解后的子问题看成相互独立的.

②动态规划将分解后的子问题理解为相互间有联系,有重叠部分.

2.相同点

解决的问题都需要最优子结构

备忘录方法与动态规划和递归的区别:

1、动态规划是自低向上,备忘录方法是自顶向下,递归是自顶向下

2、动态规划每个子问题都要解一次,但不会求解重复子问题;

备忘录方法只解哪些确实需要解的子问题;

递归方法每个子问题都要解一次,包括重复子问题•。

备注:

批阅教师

时间

实验成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1