
算法与数据结构
何人听我楚狂声
A programmer
展开
-
类深度优先算法解决n阶比赛图问题
概览本文原载于我的博客,地址:https://blog.guoziyang.top/archives/29/题目来源于数据结构的Homework,是一个在有向图中求一条哈密顿通路的问题,这个问题可以用类似于深度优先的算法解决,我使用的语言是Java(因为不想纠结于C/C++的指针)。我们先看一看题目:在有n个选手P1,P2,P3,...,PnP_1,P_2,P_3,...,P_nP1,P2,P3,...,Pn参加的单循环赛中,每对选手之间非胜即负。现要求求出一个选手序列:P1′,P2′,P3原创 2020-06-02 16:34:13 · 623 阅读 · 0 评论 -
深度优先算法的应用——农夫过河问题
本文原载于我的博客,地址:https://blog.guoziyang.top/archives/27/农夫过河问题也算是个老问题了,小学的时候经常出现在奥数教材上,和鸡兔同笼一起(笑),但是原理可比鸡兔同笼高端多了。我们看下题目:农夫需要把狼、羊、菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。我们在图结构这一章遇到了这个题目,就要思考怎原创 2020-06-02 16:33:10 · 3117 阅读 · 0 评论 -
栈结构解决后缀表达式问题
概述本文原载于我的博客,地址:https://blog.guoziyang.top/archives/26/题目来源于数据结构课的第一次实验的第二题,题目如下:表达式求值是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的。假设操作数是正整数,运算符只含加减乘除等四种运算符,界限符有左右括号和表达式起始、结束符“#”,如:#(7+15)*(23-28/4)#。引入表达式起始、结束符是为了原创 2020-06-02 16:32:01 · 632 阅读 · 0 评论 -
基于哈夫曼树的文本压缩
概览本文原载于我的博客,地址:https://blog.guoziyang.top/archives/24/哈夫曼树也称为最优二叉树,是加权路径长度最短的二叉树。权值越大的叶子结点越靠近根结点,而权值越小的叶子结点越远离根结点。每一个父节点的权值等于子节点的权值之和。可以这么说,哈夫曼树中,真正有效的、存储着数据的,只有那些叶节点,而其它节点仅仅是为了构造树结构、以及保持总权值最小而存在的。那么问题是,哈夫曼树和文本压缩有什么关系呢?这就不得不提到文本编码问题。编码与哈夫曼树编码(主要是二进制原创 2020-06-02 16:30:45 · 880 阅读 · 0 评论