
算法
文章平均质量分 90
举棋不定ok
这个作者很懒,什么都没留下…
展开
-
union-find算法
问题描述动态连通性问题:给定n个顶点,仅支持输入一对整数,一对整数p和q可以被理解为“p和q是相连的”。给定任何一对顶点,判断其是否连通。Union-find数据模型目标:为union和find操作设计一个高效的数据结构先设计一份API来封装所需的基本操作:初始化、连接两个连通分量、判断包含顶点的连通分量、判断两个顶点是否在同一连通分量以及所有连通分量的个数Union-find算法1)Quick-...原创 2018-03-16 22:58:12 · 925 阅读 · 0 评论 -
动态规划问题——0/1背包问题(Java实现)
1、问题描述0-1背包问题: 给定N件物品和一个容量为V的背包。放入第i件物品耗费的空间为C[i] ,得到的价值是 W[i] 。 问:哪些物品装入背包可使价值总和最大?最大是多少?2、基本思路2.1 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。分析:面对每个物品,我们只有选择拿与不拿两种选择,不能够选择装入物品的一部分,也...原创 2018-05-09 11:13:12 · 40525 阅读 · 9 评论 -
动态规划问题——完全背包(Java实现)
1、问题描述已知:有N种物品和一个容量为V 的背包,每种物品都有无限件可用。放入第i种物品的耗费的空间是C[i],得到的价值是W[i]。求解:将哪些物品装入背包,可使这些物品的耗费的空间总和不超过背包容量,且价值总和最大?2、基本思路这个问题与01背包问题非常类似,不同的是每件物品有无限件。从每件物品的角度来看,它相关的策略并非取或者不取,而是有取0件、取1件、取2件... 直至取 V/C[i] ...原创 2018-05-09 17:42:53 · 6125 阅读 · 0 评论 -
剑指offer(Java实现)——快速排序
1、基本原理1.1 快排基本思想:Step 1: 对输入的数组进行shuffle,防止对输入产生依赖性,以保证随机性Step 2:对数组进行切分,对于某个j,a[j]已经排定;a[lo]到a[j-1]中的所有元素都 不大于 a[j];a[j+1]到a[hi]中的所有元素都 不小于 a[j]。Step 3:然后再分别对左子数组和右子数组分别递归排序1.2 切分算法伪代码:private stati...原创 2018-05-08 16:20:46 · 787 阅读 · 0 评论