
数据结构
cuiods
南京大学软件学院学生
展开
-
找到图中所有生成树的matlab实现
寻找所有生成树的算法可以非常复杂,可以找到与此相关的研究论文。如果要追求效率则需要非常复杂的算法。但是本文介绍的是非常简单暴力搜索的方法。想法很简单:如果一个图有n个点,就在这张图的所有m个边中选出n-1条边,再判断这n-1条边和这n个点组成的是不是连通图,如果是连通图,则这n个点和n-1条边组成了一个生成树。判断连通图算法网上有什么矩阵幂和warshell算法,warshell算法好像挺高端的,但原创 2016-09-11 09:49:51 · 7951 阅读 · 7 评论 -
用回搠法解决八皇后问题的Java实现
八皇后问题是数据结构的基础问题,解决的是在一个8*8的棋盘上放8个国际象棋中的皇后,并保证8个皇后不能被其他皇后吃掉。根据国际象棋的规则,皇后可以吃同一列、同一行或同一列的棋子。回搠是数据结构的基本思想,当一个问题遇到一个岔路口,不知道哪条路正确时,我们可以试着走其中一条路,如果这条路不能走,就回到原来的岔路口试另一条路。在解决八皇后这个特定问题时,我们可以一行一行放入皇后。需要注意的地方原创 2016-09-02 16:52:38 · 953 阅读 · 0 评论 -
使用伸展树(SplayTree)统计单词频率的Java实现
伸展树(Splay Tree)是特殊的二叉搜索树。伸展树在查询时进行旋转,使得刚刚查到的节点成为树根,越频繁使用的节点会越靠近树根,这样可以加快访问速度。关于伸展树的介绍很多,在了解二叉树和AVL树后,伸展树的原理会比较好理解。本文不再介绍伸展树,而是统计各个单词在一篇文章中出现的频率,并将它们构造成伸展树。1、构造二叉搜索树二叉搜索树节点:/** * Node of原创 2016-09-17 14:05:25 · 1091 阅读 · 2 评论 -
解迷宫问题的Java实现
问题:有一个m行n列的迷宫,只有一个入口和一个出口,用0表示可以走,用1表示不可以走,现在编写一个程序列出所有可以走的路径。迷宫示例:-1 0 0 0 01 1 0 1 10 0 0 0 00 0 2 0 0(-1 表示入口,2表示出口)MazeCell类表示迷宫的一个位置:/** * @author cuiods */public class MazeCe原创 2016-09-01 23:04:09 · 8479 阅读 · 5 评论