2014年3月19日
摘要: 敏捷开发概述 敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。敏捷开发的特点 (1)敏捷开发方法是“适应性”(Adaptive)而非“预设性” (Predictive)。 (2)敏捷开发方法是“面向人” (people oriented)而非“面向过程”(process oriented)。项目的敏捷开发方法 敏捷方法很多,包括 Scrum、极限编程、功能驱动开发以及统一过... 阅读全文
posted @ 2014-03-19 19:03 刘博20112989 阅读(242) 评论(1) 推荐(0) 编辑
摘要: 前景介绍:之前我们一直使用枚举法求和,这是我们的新方法--动态规划。问题描述:给定一个整数数组a[0~n],求数组a的子数组,使其元素和为最大。问题分析:方法一:可以用普通的方法枚举所有的子数组,然后求出最大的子数组和,时间复杂度为O(n*n)。方法二:问题描述符合动态规划最优子结构的要求。设b[i]表示以a[i]结尾 的子数组的最大子段和,即:b[i]=max{sum(a[j~k])},其中00时,这时候的b[i]中包含a[i]。2,b[i] = a[i],当b[i-1] using namespace std; #define N 10 int max_sub_arra... 阅读全文
posted @ 2014-03-19 15:28 刘博20112989 阅读(234) 评论(1) 推荐(1) 编辑
摘要: 这次的课堂练习是在上次求数组最大子数组和的基础上的延伸--求二维数组最大子数组和我们的解题思路大致是这样的. 最简单的思路是想到的就是通过四层循环实现最大子数组和的查找,但这样的复杂度是比较大的。起先我们只知道利用枚举法求二维数组的值,忽略了时间复杂度的要求。怎样能够快捷的找到二维的最大子数组呢?动态规划是一个简便的算法。补充知识:动态规划是为了使获取的决策序列在某种条件下达到最优。是一种将多阶段决策过程转化为一系列单个问题,然后逐个求解的程序设计方法。于是我们两个采用了动态规划,这个想法的的思路是利用三层循环,就可以大大减小时间复杂度。a) 首先求出p[i][j],表示以(0,0)为起点,以 阅读全文
posted @ 2014-03-19 15:14 刘博20112989 阅读(158) 评论(1) 推荐(0) 编辑