作业2

一.思路

1.一维数组作业1已述

2.二维数组连续最大子矩阵的和,其实是建立在连续最大子数组的和基础上的。遇到二维的情况一般是转换为一维的解法,解法如下:

  如果子矩阵从第i行开始,到第r行结束,从第j列开始到第t列结束,则列的选择是一维的问题,关键在于如何选择哪几个行。所以在行的问题上使用暴力搜索,可得以下算法,算法复杂度达到了O(nm^2):

public static int max2(int[][] a){
        int m = a.length;
        int n = a[0].length;
        int temp[] = new int[n];
        int max = 0;
        int tempMax = 0;
        for(int i=0; i<m; i++){//从第0行开始暴力搜索
            for(int k=0; k<n; k++)
                temp[k] = 0;
            for(int j=i; j<m; j++){
                for(int p=0; p<n; p++){
                    temp[p] += a[j][p];
                }
                tempMax = max1(temp, 0);//利用已有的一维算法
                max = max > tempMax ? max : tempMax;
            }
        }
        return max;
 }
3.如果是连通的情况,暂时没有好的解法,以后补上
4.如果是上下相连,只需将行的搜索扩大一点,使每一行开始的搜索次数都达到m,关键一步是:
while(count < m){
    if(j == m)
        j = 0;
    //处理(此处省略)
    j++;
    count++;
}
5.如果是左右相连,只需将一维算法改进一下,使每一列开始的搜索次数都达到n,关键一步是:
for(int k=0; k<m; k++){
    tempMax = max1(temp, k);
    max = max > tempMax ? max : tempMax;
}
6.如果是上下左右相连,将4和5的算法合并即可。

 

 

二.心得

1.动态规划的算法本质是什么?我现在只能想到的是将大问题分解成小问题,并能利用小问题的解。关键一点在于如何划分这个大问题。这个还须多做练习才能总结出新的认识。

2.所谓将算法复杂度降低就是用人脑代替计算机?先在人脑上抽象出一些数学模型,从而简化问题?比如这个问题一维数组的情况,如果纯粹暴力解的话,计算机会大量的计算;而如果我们先自己解的话(利用动态规划)就能让计算机减少许多重复的计算。

3.二维的情况一般转换成一维的情况来解。

 

 

三.效率分析

 

 

Personal Software Process Stages

时间百分比(%)

实际花费的时间 (分钟)

原来估计的时间 (分钟)

Planning 计划 1 10 10
·         Estimate

· 估计这个任务需要多少时间,把工作细化并大致排序

     
Development 开发 91 750 480
·         Analysis · 需求分析 (包括学习新技术) 36 300 240
·         Design Spec · 生成设计文档 3 30 30
·         Design Review · 设计复审 (和同事审核设计文档) 4 30 30
·         Coding Standard · 代码规范 (制定合适的规范) 1 10 20
·         Design · 具体设计 29 240 60
·         Coding · 具体编码 3 30 30
·         Code Review · 代码复审 2 20 10
·         Test · 测试(自我测试,修改代码,提交修改) 3 30 60
Reporting

 

总结报告

8 60 30
· Test Report · 测试报告 6 50 20
· Size Measurement · 计算工作量 1 5 5
· Postmortem & Improvement Plan · 事后总结, 并提出改进 1 5 5
Total 总计 100% 820 520

 

四.效果截图

捕获

posted on 2013-09-30 12:15  mountainking  阅读(200)  评论(1编辑  收藏  举报