题目大意:John想让他的所有牛用上手机以便相互交流(也是醉了。。。),他需要建立
几座信号塔在N块草地中。已知与信号塔相邻的草地能收到信号。给你N-1个草地(A,B)
的相邻关系,问:最少需要建多少个信号塔能实现所有草地都有信号。
思路:考察树最小支配集问题。最小支配集:值从所有顶点中取尽量少的点组成一个集
合,使得剩下的所有点都与取出来的点有边相连。顶点个数最小的支配集被称为最小支
配集。这里用贪心法来求。
1.以1号点深度优先搜索整棵树,求出每个点在DFS中的编号和每个点的父亲节点编号。
2.按DFS...
分类:
Web程序 时间:
2015-01-01 14:52:51
阅读次数:
175
#includeusing namespace std;#define MAX 9999int book[101],n,e[101][101],min=MAX;//cur是当前所在的城市,dis是当前已经走过的路径void dfs(int cur,int dis){ int j; if(dis>mi...
分类:
其他好文 时间:
2014-12-29 10:11:01
阅读次数:
159
该题目主要考察了堆栈和深度优先搜索的知识点。在递归深度太深导致运行出错是,可以采用栈保存结果,减小递归的深度。详细代码如下:class Solution {public: stack> data; void solve(vector> &board) { if(board...
分类:
其他好文 时间:
2014-12-26 21:38:20
阅读次数:
129
A*算法详尽的入门教程
一:为什么我们需要A*算法
求最短路径或者最小代价的算法有很多。其本质就是图的搜索策略。图的直接搜索方法有很多种,比较典型的是广度优先搜索、深度优先搜索。所谓的广度优先搜索是每到达一个节点就优先遍历该节点的所有相邻节点。而对应的深度优先搜索是指一直延伸到从未达到过的节点。基于以上两种基本思想的最短路径算法有Dijkstra算法和Floyd算法。当搜索完毕也遍历了整...
分类:
编程语言 时间:
2014-12-26 18:46:59
阅读次数:
226
#include #define MAX 9999using namespace std;int main(){ int i,j,n,m,cur,head,tail,e[101][101],q[100001],book[101]={0}; cin>>n>>m; for(i=1;i>...
分类:
其他好文 时间:
2014-12-24 17:45:56
阅读次数:
181
/*树的邻接矩阵的存储结构*/#include #include #define MAXVEX 10#define InitEdge 0typedef char VertexType;typedef int EdgeType;typedef struct MGraph{ Ver...
分类:
其他好文 时间:
2014-12-19 14:28:11
阅读次数:
239
数据结构之图应用最小生成树最小生成树说白了就是用最少的边把所有的顶点连接起来。最小生成树是不唯一的,但是最小生成树满足边的数量比点的数量少1.最小生成树不关心边的长度也不需要找到最短的路径,而是要找到最少数量的边,创建最小生成树的算法与图的搜索算法几乎相同。下边的例子是基于深度优先搜索算法实现的,在...
分类:
其他好文 时间:
2014-12-18 16:30:10
阅读次数:
134
图的应用-搜索的实现图的搜索主要包括两种1个是深度优先搜索,一个是广度优先搜索。深度优先搜索顾名思义就是一直远离源搜索点,搜索下去,深度优先搜索的机制是有栈来实现的,广度优先搜索算法是由队列来实现的,正因为实现的机制不同,所以搜索的方式也不同。首先讲解一下深度优先搜索方法,首先找一个起始点,然后做三...
分类:
其他好文 时间:
2014-12-18 16:25:42
阅读次数:
239
此图是以图的邻接表法作为储存方式,对图进行深度优先搜索和广度优先搜索(均是非递归)
# include
# include
# define True 1
# define False 0
# define Error -1
# define OK 1
# define MAX_VERTEX_NUM 20
int visited[MAX_VERTEX_NUM];
typede...
分类:
其他好文 时间:
2014-12-17 16:33:23
阅读次数:
245
//指针在搜索算法中实例
//迷宫算法
//搜索最长用到的就是深度优先搜索和广度优先搜索
//深度优先搜索就像名字一样,对每一个道路一直搜索到底,
//为了防止思路,特别的设置了栈这种数据结构
//使得每次找到思路的时候还可以退出到出发点。
//
//
//广度优先搜索
//广度优先搜索就是利用队列性质先进先出的性质,把每次的搜索结果放入队列,
//排除思路等条件
//
/...
分类:
其他好文 时间:
2014-12-15 10:28:36
阅读次数:
194