数据结构
文章平均质量分 61
四郎别认输
这个作者很懒,什么都没留下…
展开
-
王道——顺序表编程题
1.从顺序表中删除具有最小值的元素(假设唯一)并有函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。struct ll{ int nums[10]= {1,3,4,9,7,5,2,6,8,0}; int length=10; int max_size=10; int del_min() { if(length==0) { cout<<"顺序表为空".原创 2021-01-17 17:52:32 · 816 阅读 · 0 评论 -
王道数据结构错题总结——第一章
1.可以用(抽象数据类型)定义一个完整的数据结构。解析:抽象数据类型(ADT)描述了数据的逻辑结构和抽象运算,通常用(数据对象,数据关系,基本操作集)这样的三元组来表示,从而构成一个完整的数据结构定义。2.数据的逻辑结构独立于其逻辑结构。解析:数据的逻辑结构是从面向实际问题的角度出发的,只采用抽象表达方式,独立于存储结构,数据的存储方式有多种不同的选择;而数据的存储结构是逻辑结构在计算机上的映射,它不能独立于逻辑结构二存在。3.对于不同的数据结构,逻辑结构和物理结构可以完全相同。原创 2021-01-10 18:41:06 · 1339 阅读 · 0 评论 -
算法分析与设计(王秋芬)(1)——贪心法
贪心法贪心法的基本思想每个阶段面临选择时,贪心法都做出对眼前情况的最优解,不考虑后续影响。 每个阶段的决策一旦做出,不可以更改,不能回溯 贪心法是根据贪心策略来逐步构造问题的解,策略不同结果不同 贪心法具有高效性和不稳定性,它可以很快得到解,但不一定是最优解。贪心算法的好坏关键在于贪心策略的选择贪心法的基本要素(适合的问题)最优子结构性质——当一个问题的最优解一定包含其子问题的最优解时,则该问题具有最优子结构性质 贪心选择性质——所求问题的整体最优解可以通过一系列局部最优的选择获得原创 2020-12-17 20:30:45 · 745 阅读 · 0 评论 -
1004 Counting Leaves (30分)
A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child.Input Specification:Each input file contains one test case. Each case starts with a line containing0<N<100, the number of nod.原创 2020-12-11 09:56:58 · 77 阅读 · 0 评论 -
1003 Emergency (25分)——迪杰斯特拉模板题
As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams in each city and the length of each road between any pair of cities are marked原创 2020-12-10 09:46:55 · 192 阅读 · 0 评论 -
最短路算法——Dijkstra以及它的优化
示例图代码#include <iostream>#include <math.h>#include <algorithm>#include <stdlib.h>#include <stdio.h>#include <iomanip>#include <string.h>#include <vector>#include <set>#include <map>原创 2020-12-09 20:55:59 · 158 阅读 · 0 评论 -
1064 朋友数 (20分)
如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如 123 和 51 就是朋友数,因为 1+2+3 = 5+1 = 6,而 6 就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。输入格式:输入第一行给出正整数 N。随后一行给出 N 个正整数,数字间以空格分隔。题目保证所有数字小于104。输出格式:首先第一行输出给定数字中不同的朋友证号的个数;随后一行按递增顺序输出这些朋友证号,数字间隔一个空格,且行末不得有多.原创 2020-12-02 20:44:18 · 150 阅读 · 0 评论 -
1065 单身狗 (25分)
“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。输入格式:输入第一行给出一个正整数 N(≤50 000),是已知夫妻/伴侣的对数;随后 N 行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个 ID 号,为 5 位数字(从 00000 到 99999),ID 间以空格分隔;之后给出一个正整数 M(≤10 000),为参加派对的总人数;随后一行给出这 M 位客人的 ID,以空格分隔。题目保证无人重婚或脚踩两条船。输出格式:首先第一行输..原创 2020-12-02 20:20:25 · 198 阅读 · 0 评论 -
动态规划——最小编辑距离(算法实验报告)
最小编辑距离编辑距离是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。。求出两个字符串的最小编辑距离思路:将问题细化到每一步,判断当前进行哪一类操作可以获得当前的最小的次数,以此类推获得最终的最小编辑距离代码思路:1.设字符串长度为n,m,先构造一个n*m的二维数组2.在这个二维数组的[0][0]到[n][0]赋值0到n,[0][0]到[0][m]赋值0到m3.定义向下为删除,向右为添加,向右下原创 2020-12-02 19:16:59 · 3473 阅读 · 1 评论 -
快速排序——算法实验报告
快排实验报告快排基本思想:使用分治的思想,每次排序将待排序列分成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。快排的编程思路1.找定一个关键数,然后定义一个左指针和一个右指针。2.将左指针指向的数中比关键数大的换到右边,将右指针指向的数比关键数小的换到左边,直到左右指针相遇。3.这事保证左边的数都小于关键数,右边的数都大于关键数,此时再对两个子序列递归地进行相同操作,最终获得有序列代码#include原创 2020-12-02 15:24:07 · 3654 阅读 · 0 评论 -
1005 继续(3n+1)猜想
卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我们称 5、8、4、2 是被 3“覆盖”的数。我们称一个数列中的某个数n为“关键数”,如果n不能被数列中的其他数字所覆...原创 2020-11-13 20:45:22 · 73 阅读 · 0 评论 -
1004 成绩排名
读入n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩 ... ... ...第 n+1 行:第 n 个学生的姓名 学号 成绩其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。输出格式:对.原创 2020-11-13 19:47:02 · 78 阅读 · 0 评论 -
1003 我要通过! (20分)
1003我要通过!(20分)“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有P、A、T这三种字符,不可以包含其它字符; 任意形如xPATx的字符串都可以获得“答案正确”,其中x或者是空字符串,或者是仅由字母A组成的字符串; 如果aPbTc是正确的,那么aPbATca也是正确的,其中a、b、c...原创 2020-11-13 18:54:58 · 151 阅读 · 0 评论 -
prim算法与kruskal算法学习与分析
最小生成树程序目录结构DenseGraph.h是邻接矩阵的类Edge.h是边的类,成员有两个端点与边的权重Kruskal是实现kruskal的类lazyPrimMST是惰性prim算法的类PrimMST是prim算法的类MinHeap是最小堆的类,用于实现获取最小边IndexMinHeap是最小索引堆的类,用于实现获取最小边,并且淘汰不需要的边UnionFind5是并查集的类,用于判环Prim算法思想:每次选出与选中点的集合相连的最短的边,并将其所连的点加入选原创 2020-11-13 11:44:35 · 324 阅读 · 0 评论 -
并查集的基本思想与算法
并查集用途解决连接问题 解决路径问题并查集的基本操作union:两个元素之间建立连接find:找到某个元素所连接的根元素基本思想:用树来表示彼此连接的元素,当两个元素连接时,就将它们所在的树的根节点相互连接基本代码#include <cassert>using namespace std;//集合以根节点彼此连接namespace UF2{ class UnionFind{ private: int* parent;原创 2020-10-25 18:54:39 · 523 阅读 · 0 评论 -
数据结构——线性表知识点(1)——线性表的类型定义
线性表线性结构的定义若结构是非空有限集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。如:a1->a2->...->an线性结构的特点只有一个首结点和尾结点 除首尾结点外,其它结点只有一个直接前驱和一个直接后继线性结构反映结点间的逻辑关系是一对一包括:线性表,堆栈,队列,字符串,数组等线性表的定义和特点定义:用数据元素的有限序列表示n=0时称为空表线性表的类型定义顺序存储线性表的顺序表示又称为原创 2020-10-23 21:10:04 · 884 阅读 · 0 评论 -
2067. 走方格
在平面上有一些二维的点阵。这些点的编号就像二维数组的编号一样,从上到下依次为第11至第nn行,从左到右依次为第11至第mm列,每一个点可以用行号和列号来表示。现在有个人站在第11行第11列,要走到第nn行第mm列。只能向右或者向下走。注意,如果行号和列数都是偶数,不能走入这一格中。问有多少种方案。输入格式输入一行包含两个整数n,mn,m。输出格式输出一个整数,表示答案。数据范围1≤n,m≤301≤n,m≤30输入样例1:...原创 2020-10-06 19:35:42 · 458 阅读 · 0 评论 -
数据结构(严蔚敏)——第一章知识点笔记
第一章知识点笔记重点基本术语 抽象数据类型 算法优劣的评价标准 数据结构的学习方法抽象数据类型ADTADT=(D,S,P)格式:{数据对象:<数据对象的定义>数据关系:<数据关系的定义>基本操作:<基本操作的定义>} 名称基本概念和术语数据——所有能输入到计算机的描述客观事物得到符号分为数值性数据和非数值性数据数据元素——数据的基本单位,也称结点或记录——行数据项——有独立含义的数据最小单位,也称域——列数据原创 2020-07-17 08:29:36 · 418 阅读 · 0 评论