算法导论第四章习题答案(第三版) Introduction to Algorithm

Exercises

4.1-1
若A中的元素都是负数,那么FIND-MAXIMUM-SUBARRAY的返回值是绝对值最小的子数组。
4.1-2
int Max_Subarray(int A[]){
	int max=0;
	for(int i=0;i<=n;i++)
		for(int j=i;j<=n;j++)
			if((A[j]-A[i])>max)
				max=A[j]-A[i];
	return max;
}
4.1-3
对于不同的计算机,结果会略有不同;
改进之后,速度性能会有所提升,性能交叉点不会改变。
4.1-4
最后返回语句的时候,判断结果,若为负数,则返回0。
4.1-5
int Max_Subarray(int A[]){
    int max = 0,sum = 0;
    for(int i=1;i<=length;i++){
        sum = sum + A[i];
        if( sum > max )
            max = sum;
        else if( sum < 0 )
            sum = 0;
	}
    if (max > 0)
        return max;
    return NULL;
}
如果子数组的累加和小于0,证明最大子数组一定不包含该子数组。
4.2-1.略。
4.2-2.略。
4.2-3
将矩阵补一行0或者列,显然时间复杂度是不变的。
4.2-4
T(n)=kT(n/3)+Θ(n²)。
根据主方法:
可以算出只有当时,最终式子会由该项决定,而且,计算出k的值即可。
4.2-5
同上题写出递推公式,利用主方法计算即可。
4.2-6
最快花费时间应该是k的2次方倍的strassen算法运行时间。
颠倒矩阵之后应该是k倍的strassen算法的运行时间。(不怎么会,望大家告知正确答案)
4.2-7.略。
(未完待续)

 

posted @ 2013-11-03 21:46  小牛啊  阅读(3096)  评论(0编辑  收藏  举报