数据结构
文章平均质量分 56
与数据结构有关
小开心007
进击的小白
展开
-
最大子列和问题
在计算机科学中,最大子数列问题的目标是在数列的一维方向找到一个连续的子数列,使该子数列的和最大。举一个最简单的例子,给出数组{-4,2,-1,5}求解它的最大子列和。常规思路逐一寻找,具体步骤如下:①寻找长度为1的子列:{-4},{2},{-1},{5}。数列和分别为:-4,2,-1,5②寻找长度为2的子列:{-4,2},{2,-1},{-1,5}。数列和分别为:-2,1,4③寻找长度为3的子列:{-4,2,-1},{2,-1,5}。数列和分别为:-3,6④寻找长度为4的子列:{-4,2,-原创 2021-02-18 19:27:22 · 413 阅读 · 0 评论 -
动态数组解决哈夫曼树问题
优先队列实现小根堆解决哈夫曼树问题北邮考研复试的一道真题,借助优先队列实现小根堆解决求解哈夫曼树的权值问题的方法。之前自己也没有接触过此类用法,整理下来,希望对各位有帮助。题目描述哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和的最小值。输入描述:输入有多组数据。每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)原创 2021-02-01 21:19:22 · 459 阅读 · 0 评论 -
C++中map的使用技巧
练习算法,看到了一个灵活运用map(map<key,value>)的题解,在此,回顾一下map相关操作。1、map内的键值对按照键(key)升序排列。2、map的插入是一种不可覆盖的,如果map中已经存在某个key值(只查看key 不考虑value值),则不能继续进行插入。执行插入后会返回一个 pair<iterator,bool> 对象, 第一个参...原创 2020-04-21 19:01:51 · 369 阅读 · 0 评论 -
动态规划——最长公共子序列与最长公共子串
最长公共子序列给定两个字符串,按照字符串顺序(下标递增)找出两个字符串所包含的相同字符所组成的最长子序列,子序列的元素在原来字符串中的下标不一定连续,但一定递增。最长公共子串给定两个字符串,按照字符串顺序(下标递增)找出两个字符串所包含的长度最长的公共的字符串,即找出一个字符串,两个给定的字符串都包含且长度最大。举一个例子:假设现有字符串 s1="cosdenn" s...原创 2020-03-12 23:04:18 · 193 阅读 · 0 评论 -
并查集
定义: 并查集是一种特殊的数据结构,主要用于动态维护若干不重叠的集合。顾名思义,它包含两部分,一部分是合并,另一部分是查找。模板: 1、首先,定义一个数组,用于记录一个数据集群中的各个元素之间的关系:int pre[maxsize];///pre[i]表示,元素i归属于集群pre[i]2、对数组中的元素进行初始化,使每个元素归属于自己:void Ini...原创 2020-03-04 18:38:11 · 87 阅读 · 0 评论 -
二叉树的基本操作
///二叉树相关基本操作#include<bits/stdc++.h>using namespace std;///创建结构体typedef struct BiNode{ int data; struct BiNode *lchild,*rchild;}BiNode,*BiTree;///前序中序建立二叉树BiTree CreateBiTree1(int...原创 2020-02-24 11:15:26 · 936 阅读 · 1 评论 -
C++中set常用方法
#include<bits/stdc++.h>using namespace std;int main(){ set<int>s; cout<<"s.empty():"<<s.empty()<<endl;///判断集合s是否为空如果为空返回1,不为空返回0 cout<<"s.max_size():...原创 2020-02-06 16:03:51 · 772 阅读 · 0 评论