大二 数据结构和算法
大二 数据结构和算法
努力的clz
高启强在卖鱼的闲暇之余都在看孙子兵法,努力进步!我趁着同学休息,偷偷学习编程,发发博客,不过分吧!
你还有什么理由不努力?
展开
-
贪心问题01_活动安排代码分析
本篇博客对应代码题目内容一、怎么表示活动?1、起始时间2、结束时间3、活动编号struct action{ int a,b; // 起始、结束时间 int index; // 活动编号};action s[1025]; // 存储活动内容二、数据处理这么一堆活动随机输入并存储到 s[1025] 中,需要对其排序方便处理。排序规律:...原创 2020-05-05 10:14:45 · 900 阅读 · 0 评论 -
贪心问题01_活动安排问题
题目描述: 有n个活动的集合E={1,2, ……,n},每个活动i都有一个起始时间a(i)和结束时间b(i),并且a(i)<=b(i)。如果选择活动i,则它在半开时间区间[ai,bi)内占用舞台;若区间[ai,bi)与区间[aj,bj)不相交,则称活动i与活动j是相容的。当 ( ai>=bj ) 或 ( aj>=bi )时,活动i与活动j相容。Input:输入一组数据...原创 2020-05-05 09:36:42 · 1042 阅读 · 0 评论 -
动态规划问题03_最大子段和
题目描述:给定由n个整数(包含负整数)组成的序列:a1、a2、a3……an,求该序列子段和的最大值。输入:若干个整数输出:子序列和的最大值案例输入输出:Input:1 -3 7 8 -4 12 -10 6Output:23#include<iostream>using namespace std;int a[128];int n;in...原创 2020-05-04 22:44:07 · 1034 阅读 · 0 评论 -
贪心问题_鱼塘钓鱼
鱼塘钓鱼【问题描述】现在有n个鱼塘(2<= n<=25),这些鱼塘分布在一条直线上,该路线是单向的(只能前进不能后退)。并且只能从一个鱼塘到另一个与之相邻的鱼塘(比如:要从1号鱼塘到达3号鱼塘,只能" 1 —> 2 —> 3 ",不能 " 1 —> 3 ")突然有一天,杨过养的那只大雕肚子饿了,于是杨过决定去钓鱼,在缴纳一笔背着小龙女偷偷藏起来的私房钱之后...原创 2020-04-12 16:38:49 · 1058 阅读 · 0 评论 -
回溯算法01_八皇后问题
黄药师参考全真教天罡北斗阵,琢磨出了一套阵法,并且布置在桃花岛上,名为:二十八星宿大阵。在之后郭襄被金轮法王所抓,黄药师将其运用在战场上。四万人结阵,对付蒙古的四个万人队,以及数万人伏兵。故有了:以四万五林群豪困住八万蒙古兵 的江湖传说。可今天黄老邪遇到了一个小问题,着实让他伤脑筋,于是他希望路过的江湖侠士可以帮助他解决这个难题。【问题描述】在八行八列的棋盘上放置八枚棋子,使得任意的八...原创 2020-04-15 17:44:40 · 843 阅读 · 0 评论 -
动态规划问题04_0-1背包问题代码分析
认真分析一下题目:现在用 weight[i] 表示 i物品 的重量,用 value[i] 表示 i物品 的价值。现有n件物品,还有空间为m的背包。再用一个数组 a[1025] 记录,比如: a[2]==1 表示第2件物品放进背包a[3] ==0 表示第3件物品为放进背包那么数组a就成为记录物品放还是没发的数字序列那么题目的约束条件是什么呢?n∑i=1 welght[i] * a[...原创 2020-03-30 21:46:37 · 864 阅读 · 0 评论 -
动态规划问题05_导弹拦截
题目描述:某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它能拦截任意高度的导弹,但是每拦截一发导弹,其拦截能力就下降到只能拦截上一次拦截的导弹高度。某天,雷达捕捉到敌国的导弹来袭,导弹依次飞来,该拦截系统最多能拦截多少导弹呢?Input:输入若干个数据:导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)。Outp...原创 2020-05-04 21:57:47 · 1142 阅读 · 0 评论 -
动态规划问题04_0-1背包问题
题目:现有n件物品和一个空间为V的背包,每件物品有对应的价值a和占用空间b。求解将哪些物品装入背包,使得这些物品总空间不超过背包空间,价值又最大呢?输入:第一行两个数:背包容量m he 物品数n后面n行每行两个数: 表示物品的要占用的空间 和 对应价值输出:符合要求的最大价值#include<iostream>using namespace std;int n,m;...原创 2020-03-30 16:00:58 · 892 阅读 · 1 评论 -
前序中序出后序——二叉树
描述输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。输入输入文件为tree.in,共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。树的结点一律用小写字母表示。输出输出文件为tree.out,仅一行,表示树的后序遍历序列。样例输入abdecdbeac样例输出debca方法1#include<iostream>#includ...原创 2019-12-28 22:58:28 · 944 阅读 · 0 评论 -
二叉树的前序中序后序遍历例题代码
描述1.采用二叉链表的方式进行存储2.构造一个二叉树类实现以下算法:1.创建二叉树2.对二叉树进行前序、中序、后序遍历输入扩展的前序序列.在一棵树处理结束后,根据响应判断是否处理下一棵树输出前序、中序、后序样例输入ab##c##Yabc####N样例输出abcbacbcaabccbacba#include<iostream>using na...原创 2019-12-28 22:45:53 · 2707 阅读 · 0 评论 -
求关键路径
描述求出所给的AOE-网的关键路径。输入若干行整数,第一行有2个数,分别为顶点数v和弧数a,接下来有a行,每一行有3个数,分别是该条弧所关联的两个顶点编号和弧的权值输出若干个空格隔开的顶点构成的序列(用小写字母)样例输入9 111 2 61 3 41 4 52 5 13 5 14 6 25 7 95 8 76 8 47 9 28 9 3样例输出v1 v2 v...原创 2019-12-25 16:53:41 · 964 阅读 · 0 评论 -
给并查集融入武侠元素——看完故事就会了
这篇博客是转载来自一位大神,用武侠小说元素去介绍并查集的知识,简单有趣感兴趣的点这里例子就是杭电上的畅通工程:http://acm.hdu.edu.cn/showproblem.php?pid=1232首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几...转载 2019-12-25 16:39:14 · 1004 阅读 · 0 评论 -
kruskal算法求最小生成树
描述要求对一个图使用kruskal算法求最小生成树,依次输出选出的边所关联的顶点序列,要求下标较小者在前,如图所示,其顶点序列为1 3 4 6 2 5 3 6 2 3输入若干行整数第一行为两个整数,分别为图的顶点数和边数第二行开始是该图的邻接矩阵,主对角线统一用0表示,无直接路径的两点用100来表示(保证各边权值小于100)输出若干用空格隔开的整数样例输入6 100 6 1 ...原创 2019-12-25 16:18:23 · 5124 阅读 · 0 评论 -
prim算法求最小生成树
描述:使用prim算法求某图的最小生成树的边的权值输出的序列。例如下图的最小生成树的权值输出序列为1 4 2 5 3,要求从V1顶点开始生成最小生成树。输入:若干行整数第一行为两个整数,分别为图的顶点数和边数第二行开始是该图的邻接矩阵,主对角线统一用0表示,无直接路径的两点用100来表示(保证各边权值小于100)输出:若干用空格隔开的整数样例输入:6 100 6 1 5 10...原创 2019-12-25 14:37:44 · 6167 阅读 · 0 评论 -
二叉排序树
首先二叉排序树可以为空树,若不为空:⑴若它的左子树不空,则左子树上所有结点的值均小于根结点的值;⑵若它的右子树不空,则右子树上所有结点的值均大于根结点的值;⑶ 它的左右子树也都是二叉排序树。#include <iostream>using namespace std;template <class DataType> struct BiNode{ ...原创 2019-12-04 22:14:32 · 1084 阅读 · 0 评论 -
图5——AOV网和AOE网
AOV网:在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,称这样的有向图为顶点表示活动的网,简称AOV网。特点:1.AOV网中的弧表示活动之间存在的某种制约关系。2.AOV网中不能出现回路 。拓扑序列:设G=(V,E)是一个具有n个顶点的有向图,V中的顶点序列v1, v2, …, vn称为一个拓扑序列;当且仅当满足下列条件:若从顶点vi到vj有一条路径,则在顶点...原创 2019-12-02 22:46:15 · 4255 阅读 · 0 评论 -
图4——最小生成树
**生成树的代价:**设G=(V,E)是一个无向连通网,生成树上各边的权值之和称为该生成树的代价。**最小生成树:**在图G所有生成树中,代价最小的生成树称为最小生成树。初始化两个辅助数组lowcost(=arc[0][i])和adjvex(=0)(0是始点);2. 输出顶点u0,将顶点u0加入集合U中;3. 重复执行下列操作n-1次3.1 在lowcost中选取最短边(lowcost[...原创 2019-12-02 22:06:43 · 887 阅读 · 0 评论 -
图3 - 图的基本表示结构 期末考试复习
邻接表有两种结点结构:顶点表结点和边表结点。一.vertex:数据域,存放顶点信息。firstedge:指针域,指向边表中第一个结点。二.adjvex:邻接点域,边的终点在顶点表中的下标。next:指针域,指向边表中的下一个结点。经转换为如下结构:// 边表结点定义struct ArcNode{ int adjvex; ArcNode *ne...原创 2019-12-02 20:00:59 · 937 阅读 · 0 评论 -
图2 - DFS、BFS遍历邻接矩阵图
邻接矩阵存储无向图的类const int MaxSize=10; template <class T>class Mgraph{ public: MGraph(T a[ ], int n, int e ); ~MGraph( ) void DFSTraverse(int v); void BFSTraverse(...原创 2019-12-01 21:41:51 · 952 阅读 · 0 评论 -
图1 - 数据结构期末考试复习,谁也不想看的概念知识点
图的组成部分:点和线。故图的定义是点的集合与边的集合。需要注意的是:图的顶点不能为0 !!!含有n个顶点的无向完全图有n×(n-1)/2条边。含有n个顶点的有向完全图有n×(n-1)条边。课上习题:(1)一个n个顶点的连通无向图,其边的个数至少为( )n-1(2)要连通具有n个顶点的有向图,至少需要( )条边。n(3)若无向图G=(V,E)中含7个顶点,则保证图G在...原创 2019-12-01 13:27:29 · 887 阅读 · 0 评论 -
二叉树的存储结构及实现
*二叉树的顺序存储结构用一维数组存储二叉树中的结点,并且***结点的存储位置(下标)***应能体现结点之间的逻辑关系——父子关系。小问题:一棵斜树的顺序存储会怎样呢?深度为k的右斜树,k个结点需分配2k-1个存储单元。k个结点却使用了2k-1个存储单元,是否意识到一个问题!没错!一棵二叉树改造后成完全二叉树形态,需增加很多空结点,造成存储空间的浪费。所以,二叉树的顺序存储结构一般仅存...原创 2019-11-03 19:14:57 · 2631 阅读 · 1 评论 -
二叉树算法设计
设计算法求二叉树的结点个数。void Count(BiNode *root){ if (root) { Count(root->lchild); number+ +; //number为数据成员 Count(root->rchild); }}左子树中节点的数目+右子树中节点的数目+1template<...原创 2019-11-03 12:56:25 · 1721 阅读 · 0 评论 -
二叉树的基本性质
1.二叉树的第i层上最多有2i-1个结点(i≥1)。证明:当i=1时,第1层只有一个根结点,而2i-1=20 =1,结论显然成立。假定i=k(1≤k<i)时结论成立,即第k层上至多有2k-1个结点,则 i=k+1时,因为第k+1层上的结点是第k层上结点的孩子,而二叉树中每个结点最多有2个孩子,故在第k+1层上最大结点个数为第k层上的最大结点个数的二倍,即2×2k-1=2k。结论成立。2....原创 2019-10-31 22:05:20 · 2454 阅读 · 0 评论 -
二叉树的基本概念
前序遍历序列:A B D E H I F C G后序遍历序列:D H I E F B G C A层序遍历序列:A B C D E F G H I小问题:(1)实现树的存储结构,关键是什么?如何表示树中结点之间的逻辑关系。(2)树中结点之间的逻辑关系是什么?一对多的关系;存储结构的关键:如何表示结点的双亲和孩子;顺序存储:本质上是静态指针双亲表示法双亲、孩子表示法链...原创 2019-10-31 20:39:47 · 873 阅读 · 0 评论 -
简单树算法问题 - 代码案例
什么是树?一种存储结构;什么是树?一个元素集合;什么是树,一类生活规律;树的定义:在树里存储的元素叫做结点,而树就是n(n>=0)个结点的集合;if(n==0)cout<<" 空树 ";else{每一颗大树有许多片树叶,但是只有一个根部;同理,在非空树里有且仅有一个结点叫做根节点;它是非空树最开始的结点,其它结点都是接在它后面;n>1时:一颗树中可以有许多...原创 2019-10-28 09:02:23 · 1527 阅读 · 0 评论 -
双链表
对比于单链表,双链表的结点发生了改变:template<typename Datatype>struct Node{ Datatype data; Node<Datatype> *last; // 上一个结点的地址 Node<Datatype> *next; // 下一个结点的地址};单链表的缺点就是结点只存储了后续结点的...原创 2019-10-07 23:08:31 · 843 阅读 · 1 评论 -
速学单链表
小问题:学了顺序表,为什么还要学操作更麻烦的单链表?顺序表的实现是基于数组来完成的,而对于数组来说,从声明它的那一刻起,数组的长度就确定下来了。同理,顺序表的大小的确定下来了。所以当你使用顺序表存储数据时,数据少你浪费数组空间,数据多了你数组又不够用。使用单链表是解决问题的一种方法,单链表的存储空间是动态申请的,要要几个申请几个,不会少也不会浪费。单链表的存储结构:用一组任意的存储单元存...原创 2019-10-07 21:08:06 · 843 阅读 · 1 评论 -
线性表---顺序表
一.顺序表(1)顺序存储(2)随机存取(3)数组下标从0开始,而线性表中元素序号是从1开始的。(4)数组的长度要大于当前线性表的长度。顺序表的实现:将顺序表的 “ 抽象数据类型 ” 定义在 顺序表存储结构下 用 c++ 的类实现:顺序表类!#include<iostream>using namespace std;template<typename D...原创 2019-09-14 14:46:16 · 1110 阅读 · 0 评论