homework-02

1.程序的命令行参数及文件问题

  第二次作业中要求程序支持命令行参数及文件,因此我在程序中加入了对这一部分功能的支持,并且加入一些错误处理。之后便是使用第一次作业的算法来求出最大一维子数组和即可。

  若程序无参数直接运行:

  

  若输入的文件不存在:

  

  输入了正确的文件名:

  

2.二维最大子数组问题

  关于二维最大子数组问题,一开始只能想到朴素的暴力搜索,但是这样的算法时间复杂度过高,因此决定找一些优化的算法。

   先使用一个三维数组b[i][j][k]来记录二维数组a[i][j]第k列第i行到第j行的和,这样便可以将二维数组问题简化为求一位数组b[i][j][0],b[i][j][1],...,b[i][j][k]的最大子数组和,再使用作业1的算法进行计算即可。该方法时间复杂度为O(n3),空间复杂度为O(n3)。

  

   

3.水平、垂直联通问题

  对于二维最大子数组水平联通问题,在从文件中读入二维数组时可以在矩阵右面补一个相同的矩阵,之后对这个合并后的矩阵使用上述算法即可求出最大子数组和。需要注意子数组的列宽不能超过原矩阵的列宽大小。

   同理,对于二维最大子数组垂直联通的问题,可以在矩阵下面补一个相同的矩阵来进行计算,且最大子数组的行数不能超过原矩阵的行数。

   另外,命令行参数的处理也要注意。

   

   

 

 

Personal Software Process Stages

时间百分比(%)

实际花费的时间 (分钟)

原来估计的时间 (分钟)

Planning

计划

     

·         Estimate

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

 10%  30  30

Development

开发

     

·         Analysis

·         需求分析 (包括学习新技术)

 10%  30  40

·         Design Spec

·         生成设计文档

 3.3%  10  10  

·         Design Review

·         设计复审 (和同事审核设计文档)

 3.3%  10  10

·         Coding Standard

·         代码规范 (制定合适的规范)

 3.3% 10   5

·         Design

·         具体设计

 6.6%  20  30

·         Coding

·         具体编码

 30%  90  100

·         Code Review

·         代码复审

 6.6%  20  20

·         Test

·         测试(自我测试,修改代码,提交修改)

 10%  30  40

Reporting

总结报告

     
  • Test Report
  • 测试报告
   6.6%

 20  

 20
  • Size Measurement
  • 计算工作量
  • Postmortem & Improvement Plan
  • 事后总结, 并提出改进
   10%  30  20
         
Total 总计 100% 总用时  300 总估计的用时 325

 

posted @ 2013-10-25 23:03  余明海  阅读(150)  评论(0编辑  收藏  举报