- 12
- 0
- 约小于1千字
- 约 2页
- 2017-06-08 发布于重庆
- 举报
第07周实验七最大子矩阵和问题
实验七 动态规划 最大子矩阵问题
一、实验目的
1、分析并掌握“最大子矩阵” 问题的动态规划算法求解方法;
2、运用动态规划算法解决实际问题加深对动态规划算法的理解和运用;
二、实验环境 Windows XP以上版本的操作系统,Visual Studio 2010编程环境。
实验内容
使用动态规划算法解决最大子矩阵问题,并能返回最大子矩阵的边界下标。
问题描述:给定一个m行n列的整数矩阵A,试求A的一个子矩阵,各元素之和为最大。用二维数组a[1:m][1:n]表示给定的m行n列的整数矩阵。子数组a[i1:i2][j1:j2]表示左上角和右下角行列坐标分别为 i1,j1 和 i2,j2 的子矩阵,其各元素之和记为: 最大子矩阵问题的最优值为。如果用直接枚举的方法解最大子矩阵和问题,需要O m^2n^2 时间。注意到,式中,,设,则
容易看出,这正是一维情形的最大子段和问题。因此,借助最大子段和问题的动态规划算法MaxSum,可设计出最大子矩阵和动态规划算法
int?MaxSum int?n,int?*a int?sum 0,b 0; for int?i 1;?i n;?i++ if b 0 b+ a[i]; else b a[i]; if b sum sum? ?b; return?sum;
原创力文档

文档评论(0)