![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法基础
ME815580352
这个作者很懒,什么都没留下…
展开
-
背包问题
0-1背包:有n个物体,价值分别为 v1 v2 v3....vn 重量分别为w1,w2,w3....wn 现在有一个背包能放下重量为x的物体,问如何放才能让背包里所放总价值达到最大,最大是多少 动态规划:dp[n][x] n个物体背包重量x需要一个n*x的数组,dp[i][j]表示放前i件物品背包容量是j能获取的最大价值 状态方程式:dp[i][j]=max(dp[i-1][j...原创 2018-08-21 10:17:10 · 123 阅读 · 0 评论 -
最短路径(dijist算法)
单源最短路径,计算一个顶点到另一个顶点的最短路径 贪心思想,每次找距离最近的点,并且更新距离,更新公式:path[i]=min(path[i],path[index]+map[index][i]) long walk(vector<vector<long>>& map, long s, long t, int n){ vector<long> p...原创 2018-08-21 11:04:34 · 4719 阅读 · 0 评论 -
二叉树相关问题(遍历,树高,树相同,最大距离)
二叉树的非递归前序中序后序遍历 https://blog.csdn.net/u014465639/article/details/71076092 求二叉树的高度 //获得树的高度 int getdepth(TreeNode* root){ if (root == nullptr)return 0; return max(getdepth(root->left), getdept...原创 2018-08-25 09:12:07 · 248 阅读 · 0 评论 -
KMP算法
传统的字符串比较需要不停的回溯,重复比较,但是已经比较并匹配的字符其实是已知的就是待匹配字符串自身的字符,如此可以根据这些已知信息减少回溯的字符。整个字符串的匹配只需要不停匹配下一个字符。那么待匹配字符串每次回溯的位置则根据自身决定(根据前面已经匹配的字符串)并不需要每次回溯的开头的位置。既然是根据自身,就可以先计算出每个字符的回溯位置,即next数组。next数组即表示从第二个字符开始到当前字符...原创 2018-09-13 16:31:48 · 121 阅读 · 0 评论