数据结构与算法
The Journey of Flower
这个作者很懒,什么都没留下…
展开
-
多字符串重构
问题描述: 第一行输入n和m,代表n个字符串,每个字符串长度为m;接下来n行为长度为m的n个字符串,n个字符串构成集合A。 从任意字符串中选取第一个字符为重构字符串第一个字符,从任意字符串中选取第二个字符为重构字符串第二个字符,以此类推,求出以集合A重构出来的字符串集合S。分析思路: ...原创 2018-08-31 12:36:57 · 184 阅读 · 0 评论 -
图的深度优先遍历非递归实现—C++
思路: 利用栈非递归实现深度优先遍历(DFS)图。先把起始顶点访问并入栈;然后每次取栈顶元素,找到一个与栈顶顶点连接并且未被访问的顶点,随即访问此顶点,并将此顶点入栈;直到某一顶点没有出边(针对有向图)或者所有连接的顶点都已经被访问过了,删除栈顶元素;循环上述步骤,直到栈为空,深度优先遍历结束。注:深度优先遍历到所有顶点的前提是此图为连通图;若此图为两个连通图组成的图...原创 2018-09-07 13:58:38 · 5000 阅读 · 0 评论 -
图的宽度优先遍历非递归实现——C++
思路: 用队列实现图的非递归BFS。首先把遍历起始顶点push进队列;然后每次从队列中pop一个顶点时,都遍历此顶点,并遍历边表,找出与此顶点相连接的顶点,若此连接顶点未被访问,则入队,若此顶点已被访问,则继续,直到队列为空,深度遍历结束。注意:深度遍历图时,所有顶点被访问到的前提条件为此图为连通图。代码:#include <iostream>#in...原创 2018-09-05 16:28:01 · 1505 阅读 · 1 评论 -
C++实现图的邻接矩阵
代码:#include <iostream>#include<vector>using namespace std;typedef int T; //顶点的值类型 int, char, double and so onstruct Node{ T value; //...原创 2018-09-05 14:43:15 · 2275 阅读 · 0 评论 -
二叉树的层序遍历
思路: 使用队列实现二叉树的层序遍历,先把root节点入队,然后每次从队列删除一个节点,都访问此节点,并把节点的左右子节点入队,直至队列为空。层序遍历结束。代码:#include <iostream>#include<vector>#include<queue>using namespace std;struct No...原创 2018-09-02 17:28:36 · 187 阅读 · 0 评论 -
查看数组中最小的n个数
思路:找出前n个数最大的值,每次遇到比最大值小的数,交换数值,并重新确定前n个数中的最大值。代码:#include <iostream>#include<vector>using namespace std;void swap1(vector<int> &a,int i,int j){ int temp=a[i]; ...原创 2018-08-30 15:09:15 · 1144 阅读 · 0 评论 -
归并排序
代码:#include &lt;iostream&gt;#include&lt;vector&gt;using namespace std;void merge_two_arr(vector&lt;int&gt; &amp;a,int l1,int h1,int l2,int h2){ int index1=l1; int index2=l2; vect原创 2018-08-30 12:14:11 · 103 阅读 · 0 评论 -
堆排序
思路:建立堆,代码:#include &lt;iostream&gt;#include&lt;vector&gt;using namespace std;void swap1(vector&lt;int&gt; &amp;a,int i,int j){ int temp=a[i]; a[i]=a[j]; a[j]=temp;}void a原创 2018-08-30 12:17:25 · 81 阅读 · 0 评论 -
二叉树寻路
1. 题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。思路:典型的背包问题。二叉树数据结构可采用顺序存储方式,对于非完全二叉树,采用补0的方式构成顺序数组。代码:#include &amp;lt;iostream&amp;gt;#include&amp;lt;vector&amp;gt;using namespace std;...原创 2018-08-30 11:22:05 · 1434 阅读 · 0 评论 -
c++高效实现并查集
C++实现并查集题意:输入n,m。分别代表n个节点和m个节点连接,接下来m行,每行两个数,代表两个节点相连。节点编号从1-n,请判断所有节点的组成的集合的个数。思路:典型的连通图问题,题意就是求所有节点的连通图的个数。可通过树的合并实现。首先:初始化n个节点到n棵树,每次遍历一对相连关系,对节点进行寻根,如果他们根相同,则是一个数,无需合并,否则将其中一个节点的根挂到另一个节点的根上,最后判...原创 2019-10-01 19:52:01 · 385 阅读 · 0 评论