算法、数据结构
文章平均质量分 80
RichardXG
这个作者很懒,什么都没留下…
展开
-
第二讲 完全背包问题——第二个基本的背包问题模型,每种物品可以放无限多次
P02: 完全背包问题题目有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本思路这个问题非常类似于01背包问题,所不同的是每种物品有无限件。也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件……等很转载 2012-08-07 11:06:02 · 3961 阅读 · 1 评论 -
第三讲 多重背包问题——每种物品有一个固定的次数上限。
P03: 多重背包问题题目有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本算法这题目和完全背包问题很类似。基本的方程只需将完全背包问题的方程略微一改即可,因为对于第i种物品有n[i]+1种策略:取0件,取1件……取n[i]件。令f[i]转载 2012-08-07 11:06:44 · 2451 阅读 · 0 评论 -
第一讲 01背包问题——这是最基本的背包问题,每个物品最多只能放一次
题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[转载 2012-08-07 11:05:05 · 3092 阅读 · 0 评论 -
匈牙利算法求二分图的最大匹配
二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。二分图的最大匹配:匈牙利算法 完美匹配: 如果所有点都在匹配边上,称这个最大匹配是完美匹配。 最小覆盖: 最小覆盖要求用最少原创 2012-08-14 11:33:41 · 21669 阅读 · 1 评论 -
并查集
在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通过,运行的时间复杂度也极高,根本就不可能在比赛规定的运行时间(原创 2012-08-12 10:48:05 · 639 阅读 · 0 评论 -
排序算法总结
趁空闲时间,我决定把所学过的排序算法实现并总结下,以便温故知新。将提到的排序算法有:冒泡排序,快速排序,选择排序,堆排序,插入排序,合并排序,希尔排序,计数排序,基数排序,桶排序。所有排序结果都默认为排成从前往后升序。程序都在VS2008中运行成功。 交换排序:1,冒泡排序:冒泡排序是最简单的排序,是刚学c语言时最早接触到的一个算法。他的思想就是,对待排序元素的关键字从原创 2012-09-09 16:07:41 · 11142 阅读 · 6 评论 -
马的遍历
问题描述:国际象棋或中国象棋中,在棋盘上,从任意指定的方格出发,为马寻找一条路径使马能走遍棋盘每一格并且每格只经过一次。 分析:如果是使用深度优先搜索+回溯,时间复杂度高,这里我们需要一种更高效的算法。使用贪心的思想,在每个结点对其子结点进行选取时,优先选择子节点可落子位置最少的结点。可落子位置意思是下一步能走到得位置,如:马口口口口口口口口口口口口口口口口口口口原创 2012-10-20 15:40:46 · 6388 阅读 · 0 评论