摘要:
1. 简述 注意下标、参数传递。只要把二维中下标,转化为一维数组的下标即可。2. 核心代码 二维的公式是:c[i][j] += a[i][k] * b[k][j], k=0,1,2,...,N-1 一维的公式: c[i*N+j] += a[i*N+k] * b[k*N+j], k=0,1,2,...,N-1template<classT>voidMaxtrixMultiply(constT*a,constT*b,T*c,unsignedintN){for(inti=0;i<N;i++){for(intj=0;j<N;j++){intc_index=i*N+j;inta_ 阅读全文
摘要:
1. 题目 已知某程序的时间复杂度的递推公式为:T(n)=25T(n/5)+n^2,求T(n)?2. 主定理 3. 分析 根据主定理,题目中的f(n)=n^2正好第二种情况,结果为T(n)=(n^2) * logn 如果题目稍作修改:T(n)=25T(n/5)+n^3,则为第三种情况,结果为n^3 T(n)=25T(n/5)+n^1.5,则为第一种情况,结果为n^24. 参考主定理和递归式复杂度分析 http://blog.kingsamchen.com/archives/524 阅读全文
摘要:
1. 题目 给定一整数序列A1, A2,... An (可能有负数),求A1~An的一个子序列Ai~Aj,使得Ai到Aj的和最大。例如: 整数序列-2, 11, -4, 13, -5, 2, -5, -3, 12, -9的最大子序列的和为20。 编程之美上的一道题,也是常考题目之一。2. 解答 属于基础动态规划。递推公式如下:假设序列为:a[0],a[1],...,a[n-1], 定义两个新的序列:p[0],p[1],...,p[n-1],和q[0],q[1],...,q[n-1]。 p[k]表示从a[0]到a[k]的范围,包含a[k]的最大的子序列。显然p[k]=p[k-1]>0?(p 阅读全文