这道题其实是求K条最长的不重叠的链。贪心算法+DFS即可求。深度优先搜索时,返回当前子树的最长链,使用优先队列保存其他孩子结点的最长链,即可。求结果时只需从优先队列中取前K个值的和。这相当于暴力删除每条最长的链。#include #include #include #include #include...
分类:
其他好文 时间:
2015-05-30 10:39:09
阅读次数:
125
人工智能课程的实验(我的解法其实更像是算法课程的实验)用到的算法:深度优先搜索、宽度优先搜索(状态扩展的不同策略)数据结构:表示状态的结构体、多维数组(可能是最近做算法竞赛题的影响,这次并不像以前那样依赖类和面向对象了,而是用最简单(几乎没有封装)的数据表示方法和大量的全局变量来存储数据,用面向过程...
分类:
其他好文 时间:
2015-05-26 14:07:33
阅读次数:
158
package org.loda.graph;
import org.loda.structure.Stack;
/**
*
* @ClassName: DFS
* @Description: 深度优先搜索(无向图)
* @author minjun
* @date 2015年5月24日 上午4:02:24
*
*/
public class...
分类:
编程语言 时间:
2015-05-24 08:59:08
阅读次数:
176
乍一看,图和树或者二叉树很像,但是采用基于对象的方式来构建就会有问题,因为图可能会增长到非常大,用对象来表示就会使效率低下。
首先我们需要定义一个图的类,其中通过adj数组来表示邻接表,也就是与节点相关联的节点数组;marked数组则是用来表示该节点是否被访问过,是在深度优先搜索和广度优先搜索中用到的。
function Graph(v){//图类
this.vert...
分类:
编程语言 时间:
2015-05-21 09:09:21
阅读次数:
135
Tarjan算法适用于离线批量处理多个查询请求。基本思想是以深度优先搜索的顺序访问这颗树,给这棵树的结点染色,一开始所有结点都是白色的,而当第一次经过某个结点的时候,将它染成灰色,而当第二次经过这个结点的时候——也就是离开这棵子树的时候,将它染成黑色。...
分类:
编程语言 时间:
2015-05-19 14:54:36
阅读次数:
169
图的定义背景知识看到这篇博客相信一开始映入读者眼帘的就是下面这幅图了,这就是传说中的七桥问题(哥尼斯堡桥问题)。在哥尼斯堡,普雷格尔河环绕着奈佛夫岛(图中的A岛)。这条河将陆地分成了下面4个区域,该处还有着7座连接这些陆地的桥梁。问题是如何从某地出发,依次沿着各个桥,必须经过每座桥且每座桥只能经过1次,最终回到原地。不知道这个问题且好奇的童鞋现在肯定在忙活着找出来这道题的结果了。是伟大的数学家欧拉(...
分类:
编程语言 时间:
2015-05-18 23:04:53
阅读次数:
1066
这里用到了回溯的方法,回溯其实就是一种深度优先搜索算法,相当于在整个解空间搜索问题的解,类似于穷举法,但是与穷举法的区别在于回溯法用到了剪枝,使得许多不是问题的解提前排出了,减少搜索的次数和时间。class Solution {private: vector> res; vector t...
分类:
其他好文 时间:
2015-05-18 22:22:23
阅读次数:
111
1 /******************************** 2 啊哈!算法 3 深度优先搜索算法 4 迷宫问题 5 输入: 6 5 4 7 0 0 1 0 8 0 0 0 0 9 0 0 1 0 10 0 1 0 0 11 0 0 0 1 12 1 1 4 3 13 ...
分类:
其他好文 时间:
2015-05-13 23:11:25
阅读次数:
276
近两个星期,回顾数据结构时又把图的相关知识复习了一下,顺便为了提高编码能力,将基本算法也都实现了一下。现将实例附录如下:1)要实现的算法①建立图的存储结构②深度优先搜索和广度优先搜索③求图的最小生成树④拓扑排序⑤最短路径2)存储结构设计 本系统采用图结构(mgraph)存储抽象操作的信息。其中...
分类:
编程语言 时间:
2015-05-10 22:08:40
阅读次数:
181