数据结构学习
纵浪大化中,喜,惧
这个作者很懒,什么都没留下…
展开
-
1140 Look-and-say Sequence (20 分)
#include<string>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<vector>#include<unordered_map>#include<algorithm>#include<iostream>using namespace std;//3:23string str;int N;int main原创 2022-03-03 16:05:09 · 128 阅读 · 0 评论 -
1148 Werewolf - Simple Version (20 分)
关键一步是找出了狼人就找到了谁撒谎.哎,离考试只有5天了,怎么复习!心神不宁.原创 2022-02-27 23:16:57 · 157 阅读 · 0 评论 -
1128 N Queens Puzzle(20 分)
坑了我好长时间啊!!!如果判断不行了需要把剩下的输入读完!!!原创 2022-02-26 22:36:16 · 106 阅读 · 0 评论 -
1112 Stucked Keyboard (20 分)
#include <iostream>#include <vector>#include <unordered_map>using namespace std;int K;string str;vector<char>ans1;vector<char>ansf;unordered_map<char, int>mp;unordered_map<char, int>mpnot;int main(){ s原创 2022-02-25 10:14:44 · 406 阅读 · 0 评论 -
PAT 1131. Subway Map (30) -甲级
#include <iostream>#include <vector>#include <unordered_map>using namespace std;int getransfer();void dfs(int a);int N;vector<vector<int>>G(10000);unordered_map<int, int>mp;bool visited[10000];int start, destin原创 2022-02-24 21:52:45 · 140 阅读 · 0 评论 -
单源最短路
无权图:BFS更快o(v+e),不可用dfs求树根节点到各个子节点长度,bfs和dfs都可以,因为路径只有一条原创 2022-02-14 10:09:10 · 122 阅读 · 0 评论 -
stl应用
进阶实验8-2.1 逆散列问题 (30 分)给定长度为N的散列表,处理整数最常用的散列映射是H(x)=x%N。如果我们决定用线性探测解决冲突问题,则给定一个顺序输入的整数序列后,我们可以很容易得到这些整数在散列表中的分布。例如我们将 1、2、3 顺序插入长度为 3 的散列表HT[]后,将得到HT[0]=3,HT[1]=1,HT[2]=2的结果。但是现在要求解决的是“逆散列问题”,即给定整数在散列表中的分布,问这些整数是按什么顺序插入的?输入格式:输入的第一行是正整数 N(≤1000),...原创 2021-06-03 20:37:15 · 91 阅读 · 0 评论 -
拯救007(无图模式)
#include<stdio.h>#include<stdlib.h>#include<math.h>struct Location { int x; int y;};bool Visited[100];int MaxDistance;int N;bool DFS(int Point, struct Location* L);bool JudgeLive(Location a1);bool JudgeJump(Location a1, Locat.原创 2021-06-01 15:47:20 · 90 阅读 · 0 评论 -
根据前序遍历和中序遍历生成二叉树
#include<stdio.h>#include<stdlib.h>#include<algorithm>#include<stack>char Pre[70];char Mid[70];typedef struct TNode* BinTree;typedef BinTree Position;struct TNode { int Data; Position Left; Position Right;};void AfT(Bi.原创 2021-05-28 23:03:44 · 87 阅读 · 0 评论 -
KMP
KMP 串的模式匹配 (25 分)给定两个由英文字母组成的字符串 String 和 Pattern,要求找到 Pattern 在 String 中第一次出现的位置,并将此位置后的 String 的子串输出。如果找不到,则输出“Not Found”。本题旨在测试各种不同的匹配算法在各种数据情况下的表现。各组测试数据特点如下:数据0:小规模字符串,测试基本正确性; 数据1:随机数据,String 长度为105,Pattern 长度为10; 数据2:随机数据,String 长度为10...原创 2021-05-23 09:20:59 · 74 阅读 · 0 评论 -
最小生成树的唯一性
进阶实验6-3.6 最小生成树的唯一性 (35 分)给定一个带权无向图,如果是连通图,则至少存在一棵最小生成树,有时最小生成树并不唯一。本题就要求你计算最小生成树的总权重,并且判断其是否唯一。输入格式:首先第一行给出两个整数:无向图中顶点数N(≤500)和边数M。随后M行,每行给出一条边的两个端点和权重,格式为“顶点1 顶点2 权重”,其中顶点从 1 到N编号,权重为正整数。题目保证最小生成树的总权重不会超过230。输出格式:如果存在最小生成树,首先在第一行输出其总权重...原创 2021-05-14 10:25:31 · 3020 阅读 · 0 评论 -
Hash(平方探测法)
11-散列2 Hashing (25 分)The task of this problem is simple: insert a sequence of distinct positive integers into a hash table, and output the positions of the input numbers. The hash function is defined to beH(key)=key%TSizewhereTSizeis the maximum size...原创 2021-05-10 14:28:33 · 304 阅读 · 0 评论 -
2021-05-08
基础实验5-2.2 电话聊天狂人 (25 分)给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式:在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。输入样例:413005711862 13588原创 2021-05-08 17:02:01 · 75 阅读 · 0 评论 -
平方探测法(此方法有缺陷如下图会陷入死循环,分离链表法更好)
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<stdbool.h>#include<math.h>#define MaxTblSize 10000typedef int ElementType;typedef int Index;//散列地址typedef Index Position;//数据存放位置typedef enum{Leget.原创 2021-05-06 22:58:13 · 234 阅读 · 0 评论 -
All Roads Lead to Rome (30 分)
1087 All Roads Lead to Rome (30 分)Indeed there are many different tourist routes from our city to Rome. You are supposed to find your clients the route with the least cost while gaining the most happiness.Input Specification:Each input file contains原创 2021-05-05 14:39:57 · 370 阅读 · 0 评论 -
2021-05-04
1076 Forwards on Weibo (30 分)Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may follow many other users as well. Hence a social network is formed with followers relations. When a user makes a post on Weib原创 2021-05-04 16:05:38 · 64 阅读 · 0 评论 -
邻接表方法表示图
#include<stdio.h>#include<stdlib.h>#include<queue>typedef int Vertex;typedef int WeightType;typedef int DataType;struct Edge { Vertex A; Vertex B; WeightType Weight;};typedef struct AdjVNode* PtrAdjVNode;struct AdjVNode { Pt.原创 2021-05-04 15:24:03 · 117 阅读 · 0 评论 -
2021-05-04
10-排序5 PAT Judge (25 分)The ranklist of PAT is generated from the status list, which shows the scores of the submissions. This time you are supposed to generate the ranklist for PAT.Input Specification:Each input file contains one test case. For each原创 2021-05-04 10:38:32 · 58 阅读 · 0 评论 -
2021-05-04
10-排序6 Sort with Swap(0, i) (25 分)Given any permutation of the numbers {0, 1, 2,...,N−1}, it is easy to sort them in increasing order. But what ifSwap(0, *)is the ONLY operation that is allowed to use? For example, to sort {4, 0, 2, 1, 3} we may apply...原创 2021-05-04 10:36:51 · 49 阅读 · 0 评论 -
快速排序
分析一下总是错的原因:没用笔自己试一下#define CutOff 100#include<stdio.h>#include<stdlib.h>void QuickSort(int* a, int Left, int Right);int FindMedium(int* a, int Left, int Right);void QuickSortF(int* a, int n);void InsertSort(int* a, int Right, int Left)原创 2021-04-30 22:32:11 · 87 阅读 · 1 评论 -
2021-04-28
09-排序2 Insert or Merge (25 分)According to Wikipedia:Insertion sortiterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, finds the location it be.原创 2021-04-28 17:56:34 · 51 阅读 · 0 评论 -
2021-04-28
09-排序3 Insertion or Heap Sort (25 分)According to Wikipedia:Insertion sortiterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, finds the locatio.原创 2021-04-28 17:55:43 · 46 阅读 · 0 评论 -
2021-04-26
08-图9 关键活动 (30 分)假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可以同时开设,因为它们有先后的依赖关系,比如C程序设计和数据结构两门课,必须先学习前者。但是需要注意的是,对原创 2021-04-26 14:41:32 · 86 阅读 · 0 评论 -
2021-04-25
08-图9 关键活动 (30 分)假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可以同时开设,因为它们有先后的依赖关系,比如C程序设计和数据结构两门课,必须先学习前者。但是需要注意的是,对原创 2021-04-25 19:37:44 · 222 阅读 · 0 评论 -
2021-04-25
08-图7 公路村村通 (30 分)现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。输入样例:6原创 2021-04-25 12:48:44 · 40 阅读 · 0 评论 -
2021-04-24
05-树8 File Transfer (25 分)We have a network of computers and a list of bi-directional connections. Each of these connections allows a file transfer from one computer to another. Is it possible to send a file from any computer on the network to any other?原创 2021-04-24 22:14:03 · 55 阅读 · 0 评论 -
complete search tree
04-树6 Complete Binary Search Tree (30 分)A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:The left subtree of a node contains only nodes with keys less than the node's key. The right subtree of a nod原创 2021-04-24 16:05:30 · 79 阅读 · 0 评论 -
2021-04-23
06-图3 六度空间 (30 分)“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。图1 六度空间示意图“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电原创 2021-04-23 23:20:03 · 51 阅读 · 0 评论 -
2021-04-23
03-树2 List Leaves (25 分)Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.Input Specification:Each input file contains one test case. For each case, the first line gives a positive integerN(≤10) which..原创 2021-04-23 20:53:49 · 51 阅读 · 0 评论 -
选择排序插入排序冒泡排序二分搜索
#include<stdio.h>#include<stdlib.h>void BubbleSort(int* a, int size);void Choose_Sort(int* a, int size);void InsertSort(int* a, int size);int main(){ int a[5] = { 4,6,3,8,7 }; InsertSort(a, 5); for (int i = 0; i < 5; i++) { prin.原创 2021-04-22 21:46:01 · 65 阅读 · 0 评论 -
2021-04-22
05-树9 Huffman Codes (30 分)In 1953, David A. Huffman published his paper "A Method for the Construction of Minimum-Redundancy Codes", and hence printed his name in the history of computer science. As a professor who gives the final exam problem on Huffman原创 2021-04-22 19:48:41 · 277 阅读 · 0 评论 -
02-线性结构4 Pop Sequence (25 分)
02-线性结构4 Pop Sequence (25 分)Given a stack which can keepMnumbers at most. PushNnumbers in the order of 1, 2, 3, ...,Nand pop randomly. You are supposed to tell if a given sequence of numbers is a possible pop sequence of the stack. For example, if...原创 2021-04-21 21:10:39 · 83 阅读 · 0 评论 -
拯救007困难模式
07-图5 Saving James Bond - Hard Version (30 分)This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the world's most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the ce原创 2021-04-20 23:07:29 · 119 阅读 · 0 评论 -
多项式
02-线性结构2 一元多项式的乘法与加法运算 (20 分)设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 4 -5 2 6 1 -2 03 5 20 -7 4原创 2021-04-20 23:03:59 · 132 阅读 · 0 评论 -
Dijkstra算法
妙的地方:按此方式可以收录所有的点加此方式是递增生成的#include<stdio.h>#include<stdlib.h>#include<stdbool.h>#define INFINITY 999typedef struct GNode* PtrToGNode;typedef struct ENode* PtrToENode;typedef int Vertex;typedef int WeightType;typedef char Dat原创 2021-04-17 20:03:11 · 50 阅读 · 0 评论 -
Floyd算法
/*path应该怎么更新*/#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<stdbool.h>#define INFINITY 999typedef struct GNode* PtrToGNode;typedef struct ENode* PtrToENode;typedef int Vertex;typedef int WeightType.原创 2021-04-17 19:58:02 · 57 阅读 · 0 评论 -
树的中序生成
3 Tree Traversals Again (25 分)An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the stack operations are: push(1原创 2021-04-15 20:54:44 · 76 阅读 · 0 评论 -
堆栈的创建Push Pop(数组实现)
#include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedef int Position;typedef int ElementType;typedef struct SNode* PtrToSNode;struct SNode { ElementType* Data; Position Top; int MaxSize;};typedef PtrToSNode Stack;int Is.原创 2021-04-15 17:13:28 · 350 阅读 · 0 评论 -
拯救007成功,不知道我能不能拯救我自己
距离计算最后使用的是平方,如果两个点之间距离小于007能跳的距离就有边相连节点的datatype为鳄鱼是否能上岸,使用BFS进行遍历,先去能去的鳄鱼身上每到一个鳄鱼身上就判断一下能不能成功其实时间空间造成了浪费,因为我走了007的去的每个鳄鱼,然而走到可以上岸的鳄鱼停就行,但我不知道怎么停其实这道题一开始没思路,只是慢慢分析最后找到了思路.看来我如果耐得住心思也挺强等下去了解一下什么是贪心算法This time let us consider the situation in the mo原创 2021-04-11 16:49:38 · 66 阅读 · 0 评论 -
使用DFS和BFS遍历不连通的图
06-图1 列出连通集 (25 分)给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。输出格式:按照"{v1v2...vk}"的格式,每行输出一个连通集。先输出DFS的结果,再输出BF...原创 2021-04-11 11:31:33 · 638 阅读 · 0 评论