算法
文章平均质量分 81
寂寞灵魂
这个作者很懒,什么都没留下…
展开
-
背包问题
基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的。所以有必要将它详细解释一下:“转载 2015-10-11 16:38:25 · 329 阅读 · 0 评论 -
背包问题
01背包问题题目有N件物品和一个容量为M的背包,每种物品只可以取一件。第i件物品的费用是c[i],价值是v[i]。求解将哪些物品装入背包可使价值总和最大。分析这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][j]表示前i件物品恰放入一个容量为j的背包可以获得的最大价值。则其状态转移方程便是:f[i][j]=max原创 2015-12-12 20:23:43 · 1138 阅读 · 0 评论 -
Dijkstra算法
Algorithm copied from Wikipedia.org: http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Algorithm==================================================================================================原创 2016-03-05 15:46:09 · 332 阅读 · 0 评论 -
整数划分
整数划分 --- 一个老生长谈的问题: 1) 练练组合数学能力. 2) 练练递归思想 3) 练练DP 总之是一道经典的不能再经典的题目: 这道好题求: 1. 将n划分成若干正整数之和的划分数。 2. 将n划分成k个正整数之和的划分数。 3. 将n划分成最大数不超过k的划分数。 4. 将n划分成若干奇正整数之和的划分数。 5. 将n划分成若转载 2016-06-23 14:30:23 · 504 阅读 · 0 评论 -
[直观学习排序算法] 视觉直观感受若干常用排序算法
[直观学习排序算法] 视觉直观感受若干常用排序算法1 快速排序介绍: 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在转载 2016-09-08 19:13:08 · 245 阅读 · 0 评论 -
大白话解析模拟退火算法、遗传算法
优化算法入门系列文章目录(更新中): 1. 模拟退火算法 2. 遗传算法 一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。 爬山算法实现很简单,其主要缺点是会陷入局转载 2016-09-28 15:44:35 · 664 阅读 · 0 评论 -
二叉树的inorder实现:递归、栈、Morris遍历
不包含null值检查等robust代码。递归:inorderTreeWalk(TreeNode root) { if(root != null) { inorderTreeWalk(root.left); System.out.println(root.val); inorderTreeWalk(root.right); }}栈:in原创 2017-05-04 14:21:15 · 1411 阅读 · 0 评论