递归 在函数内部,可以调用其他函数; 如果一个函数在内部调用自身本身,这个函数就是递归函数. 例如,我们来计算阶乘: n! = 1 x 2 x 3 x ... x n, 用函数f1(n)表示,可以看出: f1(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = f1(n-1) x n 所以,f1(n)可以表示为 n x f1(n-1),只有n=1时需要特殊处理. 于是,f1(n)用递归的方式写出来就是: def f1(n): if n==1:…
目录 1.矩阵相乘的朴素算法 2.矩阵相乘的strassen算法 3.完整测试代码c++ 4.性能分析 5.参考资料 内容 1.矩阵相乘的朴素算法 T(n) = Θ(n3) 朴素矩阵相乘算法,思想明了,编程实现简单.时间复杂度是Θ(n^3).伪码如下 to n to n to n do c[i][j] ← c[i][j] + a[i][k]⋅ b[k][j] 2.矩阵相乘的strassen算法 T(n)=Θ(nlog7) =Θ (n2.81) 矩阵乘法中采用分治法,第一感觉上应该能够有效的提高算…
简单方阵矩乘法 SQUARE-MATRIX-MULTIPLY(A,B) n = A.rows let C be a new n*n natrix to n to n cij = to n cij=cij+aik·bkj return C 一个简单的分治算法 SQUARE-MATRIX-MULTIPLY-RECURSIVE(A,B) n = A.rows let C be a new n*n matrix c11=a11·b11 else partition A,B,and C as in equ…
快速幂算法可以说是ACM一类竞赛中必不可少,并且也是非常基础的一类算法,鉴于我一直学的比较零散,所以今天用这个帖子总结一下 快速乘法通常有两类应用:一.整数的运算,计算(a*b) mod c 二.矩阵快速乘法 一.整数运算:(快速乘法.快速幂) 先说明一下基本的数学常识: (a*b) mod c == ( (a mod c) * (b mod c) ) mod c //这最后一个mod c 是为了保证结果不超过c 对于2进制,2n可用1后接n个0来表示.对于8进制,可用公式 i+3*j ==…
https://blog.csdn.net/feinik/article/details/54974293 Hash算法解决冲突的方法一般有以下几种常用的解决方法1, 开放定址法:所谓的开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入公式为:fi(key) = (f(key)+di) MOD m (di=1,2,3,……,m-1)※ 用开放定址法解决冲突的做法是:当冲突发生时,使用某种探测技术在散列表中形成一个探测序列.沿此序列逐个单…
Going Home Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5539 Accepted Submission(s): 2907 Problem Description On a grid map there are n little men and n houses. In each unit time, every l…