
算法
小刀_cs
这个作者很懒,什么都没留下…
展开
-
0-1背包问题解析
0-1背包问题是指每一种物品都只有一件,可以选择放或者不放。现在假设有n件物品,背包承重为m。对于这种问题,我们可以采用一个二维数组去解决:f[i][j],其中i代表加入背包的是前i件物品,j表示背包的承重,weight[i]代表第i件物品的重量,f[i][j]表示当前状态下能放进背包里面的物品的最大总价值。那么,f[n][m]就是我们的最终结果了。采用动态规划,必须要知道初始状态和状态转...原创 2019-05-21 14:28:35 · 377 阅读 · 0 评论 -
最长上升子序列(LIS)算法
原文,https://blog.youkuaiyun.com/qq_40507857/article/details/81198662,在此基础上做了些笔记LIS定义LIS(Longest Increasing Subsequence)最长上升子序列一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, a...转载 2019-05-23 08:36:16 · 416 阅读 · 0 评论 -
Python实现二叉树的遍历
二叉树是有限个元素的集合,该集合或者为空、或者有一个称为根节点(root)的元素及两个互不相交的、分别被称为左子树和右子树的二叉树组成。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。 二叉树的第i层至多有2^{i-1}个结点 深度为k的二叉树至多有2^k-1个结点; 对任何一棵二叉树T,如果其终端结点数为N0,度为2的结点数为N2,则N0...原创 2019-05-27 17:23:43 · 300 阅读 · 0 评论 -
Dijkstra算法-python版本
以下代码中的图可以是手动输入,或者直接使用定义好的。手动输入的,需输入点的数目n,以及边的数目m,以及直接点之间的权重。总体思路,每次找出当前图中距离源点1最近的点k,计算源点1经过该点k到达某个点j是否比原来更近,如果更近,则把源点1到某个点j的距离,替换为这个更近的距离。经过n-1次查找(把除了源点之外的点都遍历一遍,每个点都当一次中介值),即可得出源点到每个点最近的距离。#目的...原创 2019-06-06 15:08:48 · 677 阅读 · 0 评论