2016年5月17日

摘要: 库鲁斯卡尔(Kruskal)算法是一种按照连通网中边的权值递增的顺序构造最小生成树的方法。Kruskal算法的基本思想是:假设连通网G=(V,E),令最小生成树的初始状态为只有n个顶点而无边的非连通图T=(V,{}),图中每个顶点自成一个连通分量。在E中选择权值最小的边,若该边依附的顶点落在T中不同 阅读全文
posted @ 2016-05-17 20:24 wxdjss 阅读(7258) 评论(0) 推荐(0)
摘要: 构造最小生成树的Prim算法 假设G=(V,E)为一连通网,其中V为网中所有顶点的集合,E为网中所有带权边的集合。设置两个新的集合U和T,其中集合U用于存放G的最小生成树的顶点,集合T用于存放G的最小生成树中的边。令集合U的初值为U={u0}(假设构造最小生成树时是从顶点u0出发),集合T的初值为T 阅读全文
posted @ 2016-05-17 12:45 wxdjss 阅读(614) 评论(0) 推荐(0)

2016年5月16日

摘要: 1.概述 为了实现图的广度优先搜索,必须引入队列结构来保存已访问过的顶点序列:即从指定的顶点开始,每访问一个顶点就同时使该顶点进入队尾;然后由队头取出一个顶点并访问该顶点的所有未被访问过的邻接边结点并且使该邻接边结点进入队尾......如此进行下去直到队空为止,则图中所有由开始顶点所能到达的全部顶点 阅读全文
posted @ 2016-05-16 16:12 wxdjss 阅读(607) 评论(0) 推荐(0)
摘要: 1.概述 深度优先搜索遍历图的过程是一个递归过程,我们可以用递归算法来实现。在算法中为了避免在访问过某顶点后又沿着某条回路回到该顶点这种重复访问的情况出现,就必须在图的遍历过程中对每一个访问过的顶点进行标识,这样才可以避免一个顶点被重复访问的情况出现。所以我们在遍历算法中对n个顶点的图设置了一个长度 阅读全文
posted @ 2016-05-16 12:40 wxdjss 阅读(377) 评论(0) 推荐(0)
摘要: 哈夫曼树(Huffman)树又称最优二叉树,是指对于一组带有确定权值的叶子结点所构造的具有带权路径长度最短的二叉树。从树中一个结点到另一个结点之间的分支构成了两结点之间的路径,路径上的分支个数称为路径长度。二叉树的路径长度是指由根结点到所有叶子结点的路径长度之和。如果二叉树中的叶子结点都有一定的权值 阅读全文
posted @ 2016-05-16 09:08 wxdjss 阅读(20664) 评论(1) 推荐(1)

2016年5月13日

摘要: 题目:设有n=2^k个运动员要进行网球循环赛要设计一个满足以下要求的比赛日程表: 每个选手必须与其他n-1个选手各赛一次; 每个选手每天只能赛一次; 循环赛一共进行n-1天。 按此要求可将比赛日程表设计成有n行和n-1列的表。在表中第i行和第j列处填入第i个选手在第j天所遇到的选手。 按照分治策略, 阅读全文
posted @ 2016-05-13 14:59 wxdjss 阅读(4419) 评论(0) 推荐(0)

2016年5月12日

摘要: 题目:输入n个整数,找到其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 解法一:O(n)的算法,只有当我们可以修改输入的数组时可用, 我们同样可以基于Partition函数来解决这个问题。如果基于数组的第k个数字来调整,使得比第K个数字小的所有 阅读全文
posted @ 2016-05-12 20:29 wxdjss 阅读(230) 评论(0) 推荐(0)
摘要: 1 #include<graphics.h> 2 #include<stdlib.h> 3 #include<stdio.h> 4 #include<conio.h> 5 #include<time.h> 6 #include<cmath> 7 8 int tile=1; 9 int board[1 阅读全文
posted @ 2016-05-12 14:50 wxdjss 阅读(319) 评论(0) 推荐(0)
摘要: 在一个2k x 2k ( 即:2^k x 2^k )个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖,用到的方格数为(4^k-1 阅读全文
posted @ 2016-05-12 08:35 wxdjss 阅读(668) 评论(0) 推荐(0)
摘要: 题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323. 解析:这个题目最直接的做法应该是先求出这个数组中所有数字的全排列,然后把每个排列拼起来,最后求出拼起来的数字的最小值。根 阅读全文
posted @ 2016-05-12 08:25 wxdjss 阅读(243) 评论(0) 推荐(0)

导航