![](https://img-blog.csdnimg.cn/20200429132318219.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法与数据结构
算法与数据结构
Jack Mai
Stay hungry.
展开
-
【算法笔记】回溯法——n皇后问题
回溯法——n皇后问题问题描述:按照国际象棋的规则,皇后可以攻击同一行、同一列、同一斜线上的棋子。求n×n格的棋盘上彼此不受攻击的n个皇后的摆法。原创 2016-05-31 19:46:43 · 1435 阅读 · 0 评论 -
【数据结构】散列表的插入和查找(C++实现)
基本概念散列表:散列表存储了各个关键字key及其地址。散列函数:p=H(key),关键字key到其地址的映射。散列地址:将key作为参数,丢到散列函数H()中,算出来的结果,就是散列地址。冲突:不同的key,通过散列函数算出来的散列地址一样,这种现象称为冲突。即key1≠key2,但H(key1)=H(key2)。散列查找的思路给定待查找的关键字key,根据散列函数计算出散列地址...原创 2020-04-26 17:24:30 · 1184 阅读 · 0 评论 -
【算法笔记】动态规划——走棋盘
题目描述一个棋盘有n行m列,从棋盘的左上角走到右下角,每次只能往右走一步,或者往下走一步,总共有多少种走法?原创 2019-05-01 18:36:00 · 3687 阅读 · 1 评论 -
【算法笔记】回溯法——01背包问题
【算法笔记】回溯法——01背包问题#include<iostream>using namespace std;#define N 1000int n; //物品数量int c; //背包总容量int left_c; //背包剩余容量int v[N]; //物品价值int w[N]; //物品重量int x[N];原创 2017-01-27 22:26:40 · 1446 阅读 · 0 评论 -
【算法笔记】动态规划——矩阵连乘问题
Sample Input630 3535 1515 55 1010 2020 25Sample Output 115125((A1(A2A3))((A4A5)A6))最优子结构性质:原问题的最优解包含 其子问题的最优解参考资料:《计算机算法设计与分析》(第四版)p44-p49...原创 2019-01-28 21:55:15 · 1541 阅读 · 0 评论 -
【算法笔记】算法的平均时间复杂度A(n)的公式及示例
算法平均时间复杂度计算公式A(n)=∑I∈SPItIA(n) = \sum\limits_{I\in S}P_I t_IA(n)=I∈S∑PItI其中:SSS是规模为nnn的实例集实例III的概率为PIP_IPI实例III的基本运算次数(也就是工作量)为tIt_ItI举例:检索问题,数组L有n个元素,每个元素为从1到n的整数。若待检索元素在L中(例如1,2,3,4,5)...原创 2019-03-08 17:17:34 · 4835 阅读 · 2 评论 -
【算法笔记】差消法化简高阶递推方程示例:计算快速排序平均时间复杂度
快排代码如下:void quickSort(int a*, int p, int r){ if(p &amp;amp;lt; r) { int q = partition(a, p, r); //划分 quickSort(a, p, q-1); quickSort(a, q+1, r); }}每一趟的工作量 = 子问题的工作量 + 划分的工作量(即划分的比较次数)下图展示了n种可能的...原创 2019-03-09 21:35:28 · 2011 阅读 · 0 评论 -
【算法笔记】递归树应用实例:计算归并排序平均时间复杂度
递归树递归树是迭代的图形表示,可用于求解递推方程。例1:利用递归树计算归并排序的平均时间复杂度。归并排序伪代码:MergeSort(A,p,r){ if(p&amp;lt;r) { q = (p+r)/2; MergeSort(A,p,q); MergeSort(A,q+1,r); Merge(A,p,q,r); //合并两个子数组 } }根据以上的伪代码,可以写...原创 2019-03-11 21:45:52 · 1402 阅读 · 0 评论