
算法与数据结构
SCS199411
这个作者很懒,什么都没留下…
展开
-
图的创建和遍历c++实现
#include <iostream>#include <vector>#include <cassert>#include <stack>#include <queue>#include <algorithm>using namespace std;class SparseGraph{public: ...原创 2019-05-30 13:55:40 · 8006 阅读 · 1 评论 -
最长公共子序列c++实现
最长公共子序列给定两个字符串S1和S2,求两个字符串的最长公共子序列的长度。输入样例ABCDAEBD输出样例3解释S1和S2的最长公共子序列为ABD,长度为3思路动态规划LCS(m,n)LCS(m ,n)LCS(m,n)表示S1[0...m]S1[0...m]S1[0...m]和S2[0...n]S2[0...n]S2[0...n]的最长公共子序列的长度S1[m]==S2[...原创 2019-08-11 19:52:28 · 5701 阅读 · 1 评论 -
完全背包问题c++
完全背包问题有 N 种物品和一个容量是 W 的背包,每种物品都有无限件可用。第 i 种物品的体积是 wiw_iwi,价值是 wiw_iwi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,NNN,WWW,用空格隔开,分别表示物品种数和背包容积。接下来有NNN 行,每行两个整数 wiw_iwi,viv_ivi,用空...原创 2019-08-07 20:34:11 · 5504 阅读 · 0 评论 -
转自知乎-通俗易懂的KMP算法详解
有些算法,适合从它产生的动机,如何设计与解决问题这样正向地去介绍。但KMP算法真的不适合这样去学。最好的办法是先搞清楚它所用的数据结构是什么,再搞清楚怎么用,最后为什么的问题就会有恍然大悟的感觉。我试着从这个思路再介绍一下。大家只需要记住一点,PMT是什么东西。然后自己临时推这个算法也是能推出来的,完全不需要死记硬背。KMP算法的核心,是一个被称为部分匹配表(Partial Match Table...转载 2019-07-11 19:27:54 · 290 阅读 · 0 评论 -
用两个栈模拟实现一个队列,其最大容量是多少
题目:如何用两个栈模拟实现一个队列? 如果这两个堆栈的容量分别是m和n(m>n),你的方法能保证队列的最大容量是多少?(这里讨论的是顺序栈,如果是链式栈的话完全没有必要考虑空间)分析:栈的特点是“后进先出(LIFO)”,而队列的特点是“先进先出(FIFO)”。用两个栈模拟实现一个队列的基本思路是:用一个栈作为存储空间,另一个栈作为输出缓冲区,入队时把元素按顺序压入两栈模拟的队列,出队时按...转载 2019-06-11 15:58:45 · 12603 阅读 · 8 评论 -
堆排序、归并排序、快速排序
堆排序/*算法步骤:1)利用给定数组创建一个堆H[0..n-1](我们这里使用最小堆),输出堆顶元素2)以最后一个元素代替堆顶,调整成堆,输出堆顶元素3)把堆的尺寸缩小14) 重复步骤2,直到堆的尺寸为1*/ #include <iostream>#include <vector>using namespace std; //辅助交换函数...转载 2019-05-27 21:35:40 · 358 阅读 · 0 评论 -
二叉树的遍历c++实现
前序遍历递归实现class Solution {public: vector<int> preorderTraversal(TreeNode* root) { vector<int> res; if(root == NULL) return res; help(root, res); ...原创 2019-05-27 21:24:38 · 286 阅读 · 0 评论 -
链表的c++实现
#include <iostream>using namespace std;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};//使用数组创建链表ListNode* createLinkedList(int arr[], int...原创 2019-05-27 21:09:46 · 3167 阅读 · 0 评论 -
0-1背包问题c++实现
0-1背包问题有一个背包,其容量为C。现在有n种不同的物品,编号为0…n-1,其中每一件物品的重量为w(i),价值为v(i)。问可以向这个背包盛放哪些物品,使得在不超过背包容量的基础上,物品的总价值最大。记忆化搜索class Solution{public: //w为物品的重量,v为物品的价值,C为背包的重量 int knapsack01(const vector<...原创 2019-05-27 20:36:17 · 1681 阅读 · 0 评论 -
并查集c++实现
#include <iostream>#include <vector>#include <cassert>using namespace std;class UnionFind{private: vector<int> parent; int count; //优化,记录p和q所在组的深度,在合并时将深度小的结...原创 2019-08-11 19:58:29 · 1341 阅读 · 0 评论