分治法(divide & conquer)应用举例

来源:互联网 发布:执行sql脚本 编辑:程序博客网 时间:2024/05/16 01:53

1. 数列快速求和和矩阵快速乘法

1+2++n==(1++n2)+((n2+1)++(n2+n2))2(1++n2)+n2n2

也即:f(n)=2f(n2)+n24 ⇒ 问题的规模以 n/2 的缩小,时间复杂度从 O(n) 变为 O(logn)

int fastSum(int n){    if (n == 1) return 1;    if (n % 2) return fastSum(n-1) + n;    return 2*fastSum(n/2)+n/2*n/2;}
0 0
原创粉丝点击