数据结构
数据结构
岛屿绕城
向着未知怀有敬畏之心。
展开
-
第二届全国大学生算法设计与编程挑战赛(冬季赛)关于哥俩好的数字这件事 题解
Description这题是个签到题。数字 x,y 是个「哥俩好」数字,当且仅当数字 x 的数位和与数字 y 的数位和相同。你需要找 n 个不同的正整数,使得这 n 个数字两两之间均为「哥俩好」数字且总和最小。Input一个整数 n , 1≤n≤5000Output最小的「哥俩好」数字总和。Sample Input 15Sample Output 1110Sample Input 22Sample Output 211Hint对于样例2,我们可以选择1+10,故输出11思原创 2021-03-17 18:45:36 · 635 阅读 · 0 评论 -
C++ Spfa判断负环简易模板
#include<bits/stdc++.h>using namespace std;const int N=10010*2;int e[N],ne[N],w[N],h[N],idx,cnt[N],dis[N],st[N];int n,m;queue<int> q;void add(int a,int b,int c){ e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++;}bool spfa(){ memset(d原创 2020-11-12 22:29:56 · 198 阅读 · 0 评论 -
C++ 二分查找模板(普通、左边界、右边界)
//最基本的二分查找算法int binary_search(int[] nums, int target) { int left = 0, right = nums.length - 1; while(left <= right) { int mid = left + (right - left) / 2; if (nums[mid] < target) { left = mid + 1; } else原创 2020-10-31 15:46:55 · 1146 阅读 · 0 评论 -
C++ 区间合并模板
相关题目:区间合并#include<bits/stdc++.h>using namespace std;vector<pair<int,int> > temp,ans;int main(){ int n,i=0; cin>>n; while(n--) { int x,y; cin>>x>>y; temp.push_back({x,y});原创 2020-10-28 20:57:21 · 477 阅读 · 0 评论 -
C++ 树状数组简易模板
#include <iostream>#include <cstdio>using namespace std;const int N = 100010;int a[N], tr[N];int n, m;//lowbit 函数int lowbit(int x){ return x & -x;}//在第x的数上加上vvoid add(int x, int v){ for(int i = x; i <= n; i += lowb原创 2020-10-26 22:46:14 · 203 阅读 · 0 评论 -
洛谷P1433 吃奶酪 DFS、模拟退火
1原创 2020-07-14 14:36:50 · 181 阅读 · 0 评论 -
C++ Dijkstra简易模板
#include<iostream>#include<algorithm>#include<queue>#include<memory.h>using namespace std;struct edge{ int to; int next; int w;}edge[500010];int cnt=0;int head[100010];int d[100010];int vis[100010];int n,m,u,v,w,s;pri原创 2020-07-12 10:26:27 · 1176 阅读 · 1 评论 -
C++ Kruskal简单模板
#include<iostream>#include<algorithm>#include<cstdio>using namespace std;int f[200005];int n;int m;int ans=0;int cnt=0;struct edge{ int u; int v; int w;}Edge[200005];int read(){ int x=0,f=1; char c=getchar(); while(c<原创 2020-07-06 17:04:58 · 410 阅读 · 0 评论 -
C++模拟手机通信录管理系统
一、题目模拟手机通信录管理系统主要功能有:(1)查看功能:选择此功能,列出手机通信录得分类,如A同事、B家人、C朋友、D同学等分类,但选中某分类时,像是出此类所有数据中的姓名和电话号码;(2)增加功能:录入新数据(包括姓名、电话号码、分类),当录入重复的姓名和电话号码时,提示结果错误并取消录入。(3)修改功能:对选择(选择的方式自定)的联系人,修改其通信录的相关信息,但如果修改姓名,不能跟其他已有的联系人的姓名不能重复。(4)删除功能:选择某个联系人的姓名,可对此人的相应数据进行删除。(5)其原创 2020-06-19 13:26:19 · 4257 阅读 · 10 评论 -
C++模拟实现cpu任务调度(FCFS和SJF的实现)
一、题目模拟实现cpu任务调度,要求说明调度算法及实现的数据结构。二、效果图当没有明显长作业出现时,FCFS和SJF的时间区别不大当明显长作业出现时,FCFS和SJF的平均周转和平均带权周转时间相差很大三、分析在这个实验中,我使用到了结构体队列的方法来进行相应的操作,只需要首先先将作业的结构体定义出,同时再将其存入队列中,通过对队列进行不同的排序操作和对队列中符合条件的元素选择,在FCFS中我们可以根据每个作业的到达时间来选择这一次要执行哪一个作业,而在SJF中,我们每次执行完一个作业原创 2020-06-19 12:57:25 · 1898 阅读 · 1 评论 -
C++栈和队列模拟停车场管理系统
一、题目某停车场可以停放n辆汽车,该停车场只有一个大门, 每辆汽车离开停车场都要求之前的汽车必须先退出停车场为它让道,而后让道的汽车再次驶入停车场,停车场示意图如下:要求设计合理的数据组织方式,设计算法实现停车管理系统,实现车辆的进入、离开并根据停车时间计费。二、效果图五辆车进入只能停三辆车的停车场(假设停车场容量为3)查看车场状态同时让一辆车离开 候车场的车进入查看车场状态再让一辆车离开 候车场的车进入查看车场离开的那两辆车的历史停车付费记录三、分析对于这一题来说,我们只要原创 2020-06-19 12:52:52 · 3496 阅读 · 2 评论 -
C++实现用Huffman编码方法 实现对通信字符的编码和解码(霍夫曼树)
题目:用Huffman编码方法 实现对通信字符的编码和解码效果图:输入字符串原码来实现HuffmanTree输入权值来实现HuffmanTree可以同时输入数字、字符、空格、符号思路:①:首先,要想构造出HuffmanTree,我们需要对输入的字符权值进行处理,这里由于主要的输入方式为输入字符串,通过相应的函数来计算每个字符的占比权值或者是直接输入每个字符的权值两种方式,相应的处理方式有略微的不同,但是大体是一致的,我定义了一个double类型的weight数组来存放字符的权值,然后原创 2020-06-17 17:38:43 · 1870 阅读 · 0 评论 -
数据结构第二章 线性表题目答案
一、选择题1.表长为n 的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为( E ),删除一个元素需要移动的元素的个数为( A )A. (n-1)/2 B .n C.n+1 D.n-1E. n/2 F.(n+1)/2 G.(n-2)/2...原创 2020-05-03 16:22:55 · 5734 阅读 · 0 评论 -
数据结构第一章 绪论题目答案
题目:一、选择题1.每种数据结构都具备3个基本运算:插入、删除和查找,这种说法(B )。A.正确 B.不正确2.数据结构被形式定义为(D,S),其中D是(B)的有限集合,S是D上的(H)有限集合。A.算法 B.数据元素 C.数据操作 D.逻辑结构E.操作 F.映象 G.存储 H.关系3.以下与数据的存储结构无关的术语是( D)。A.循环队列 B....原创 2020-05-03 16:20:49 · 2967 阅读 · 0 评论 -
数据结构第三章 栈和队列题目答案
一、选择题1.栈结构通常采用的两种存储结构是( A )。A.顺序存储结构和链表存储结构 B.散列方式和索引方式C.链表存储结构和数组 D.线性链表结构和非线性存储结构2.在栈操作中,输入序列为(A,B,C,D),不可能得到的输出数列是( D )。A.(A,B,C,D) B.(D,C,B,A)C.(A,C,D,B) ...原创 2020-05-03 16:16:14 · 7844 阅读 · 1 评论 -
C++队列模拟作业任务调度(FCFS 先来先服务调度算法)
一、背景介绍** 什么是FCFS(先来先服务):**如果早就绪的进程排在就绪队列的前面,迟就绪的进程排在就绪队列的后面,那么先来先服务(FCFS: first come first service)总是把当前处于就绪队列之首的那个进程调度到运行状态。也就说,它只考虑进程进入就绪队列的先后,而不考虑它的下一个CPU周期的长短及其他因素。FCFS算法简单易行,是一种非抢占式策略,但性能却不大好。...原创 2020-05-03 14:12:58 · 2304 阅读 · 0 评论 -
C++多线程+优先队列模拟打印机任务管理
效果图:当打印任务中出现优先级高的任务则先打印当打印任务的份数超过最大容量时还能记忆已打印份数当打印队列的任务数不超过最大容量时当打印任务还没全部打印完时出现比它优先级更高的任务当打印任务优先级相同时优先打印内容少的#include<stdio.h>#include<iostream>#include<queue>#inclu...原创 2020-06-17 17:38:55 · 2125 阅读 · 0 评论 -
动态规划(DP)经典简单入门题目集
这里写目录标题一、三步问题二、连续数列三、打家劫舍四、不同路径五、最小路径和一、三步问题题目链接我们可以列出一个数组dp[n],在这个数组中的第i位保存的数据就是上i个楼梯有多少种走法,由此我们可以先得到:dp[1]=1;dp[2]=2;dp[3]=4;同时我们可以推出状态转移访方程为:dp[i]=(dp[i-1]+dp[i-2]+dp[i-3])代码如下:class So...原创 2020-04-29 23:18:39 · 11126 阅读 · 1 评论 -
这可能是最简单的C语言单链表入门详解
前情提要:大家在学习C语言的过程中,单链表是一部分非常重要的部分,但是往往我们在学校听老师上课时或者自己看书后,却依旧有着很多的问号,所以在接下来的文章中,我将会从我一个学生的角度出发,对单链表进行详细的讲解,并且力求让大家最快的能够熟悉并且掌握单链表,让大家都能自己独立写出自己的链表,有什么问题也希望大家多多提出,那么接下来我们正式开始~1.1 什么是链表:链表是一种物理存储单元上非连续...原创 2020-03-31 22:31:56 · 1224 阅读 · 2 评论 -
激光炸弹(图解 二维前缀和遍历)
一、题目地图上有 N 个目标,用整数Xi,Yi表示目标在地图上的位置,每个目标都有一个价值Wi。注意:不同目标可能在同一位置。现在有一种新型的激光炸弹,可以摧毁一个包含 R×R个位置的正方形内的所有的目标。激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和x,y轴平行。求一颗炸弹最多能炸掉地图上总价值为多少的目标。输入格式第一行输入正整数 ...原创 2020-03-18 17:50:21 · 436 阅读 · 0 评论 -
C++五种排序简易模板(冒泡排序、选择排序、插入排序、希尔排序、快速排序)
1.冒泡排序void BubbleSort(int a[],int n){ for(int i=0;i<n;i++) { for(int j=0;j<n-1-i;j++) { if(a[j]>a[j+1]) swap(a[j],a[j+1]); } }} 2.选择排序void SelectSort(int a[],int n){ fo...原创 2020-03-16 21:39:07 · 682 阅读 · 0 评论 -
数据结构第一章练习
题目:一、选择题1.每种数据结构都具备3个基本运算:插入、删除和查找,这种说法( B)。A.正确 B.不正确2.数据结构被形式定义为(D,S),其中D是( B)的有限集合,S是D上的( H)有限集合。A.算法 B.数据元素 C.数据操作 D.逻辑结构E.操作 F.映象 G.存储 H.关系3.以下与数据的存储结构无关的术语是( D )。A.循环队列...原创 2020-03-15 21:41:03 · 1496 阅读 · 0 评论