首页 > 编程语言 >C/C++数据结构题目(2022)

C/C++数据结构题目(2022)

时间:2022-11-21 22:56:37浏览次数:64  
标签:输出 play 传送门 work C++ 包裹 2022 数据结构 com

C/C++数据结构题目(2022)

1、菜鸟智慧系统(线性表)

[问题描述]
使用双向链表模拟快递驿站的系统运作:

  • 假设快递驿站的货架分小、中、大3种类型,容量分别为500、100、50个包裹;该快递站关联的社区人员为MAX_PERSON人(例如,限定为30人,每人唯一手机号)。
  • 驿站每天都会来一批新的包裹。包裹根据大小类型分别上对应的货架,加入对应链表表尾,并使用该货架当前可用的最小编号。用N[1]、N[2]、N[3]分别表示每天随机来的大、中、小包裹数量,保证N[i]在货架的承受能力之内。
+ 包裹信息包括:包裹编号(生成的取件码,分别为1-x(小),2-x(中), 3-x(大))、取件人姓名、取件人手机号、包裹大小(小1、中2、大3)、到达日期。
+ 包裹上架时,按照包裹编号从小到大的顺序排列。 
+ 包裹取出后就从对应链表中删除。用M表示每天随机来取包裹的人数,且M≤MAX_PERSON。
+ 包裹最多在驿站存放两天,逾期则退还寄件人(从货架上清除)。
+ 当一人来取包裹时,可通过提供其任一取件码或手机号查询包裹并取出该人员所有关联的包裹。
+ 设计相应的分析、统计功能(自定义),例如当天收包裹数量最多的人,当天有包裹人的平均包裹数量,一周内与其被退回的包裹数量等。
+ 可根据需要做功能拓展,使得模拟系统更接近实用或在现有商用快递系统的基础上有针对性的创新(*)
+ 该问题需有较好的展示性,能够演示快递收发过程。

[基本要求]
(1) 所有事件均随机生成
(2) 用文件存储货架状态,所有变更均应反应在文件中。存储形式自行设计,但务必清晰、直观

源码传送门

传送门:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111

2、算术表达式求值(栈)

[问题描述]
一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的。假设操作数是正实数,运算符只含加减乘除等四种运算符,界限符有左右括号和表达式起始、结束符“#”,如:#6+15(21-8/4)#。引入表达式起始、结束符是为了方便。编程利用“运算符优先法”求算术表达式的值。
[基本要求]
(1)从键盘或文件读入一个合法的算术表达式,输出正确的结果。
(2)显示输入序列和栈的变化过程。
(3)考虑算法的健壮性,当表达式错误时,要给出错误原因的提示。
(4)实现非整数的处理(
)。

源码传送门

传送门:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111

3、特殊路径统计(树和图)

[问题描述]
给定一颗有N个节点(编号为1-N)的树。
两个节点a,b(a<b)之间的简单路径上若所有节点编号i均在a,b之间(a≤i≤b),则该路径可标记为特殊路径。
试统计树上一共有多少条特殊路径。
[输入格式]

+ 第一行包含一个整数N,代表节点数
+ 第二行包含N个整数p1,p2,…,pn,代表每个节点的父节点编号。若pi=0,则该节点为树的根节点

[输出数据]
输出树上一共有多少条特殊路径
[补充说明]

+ 0≤pi≤N
+ 有且仅有一个pi=0
+ 输入的图是一棵树

[样例1]
输入:

7
0 5 5 1 4 1 4

输出:

10

[样例2]
输入:

5
2 3 0 2 2

输出:

7

其中样例1的图形示例:

源码传送门

传送门:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111

4、Huffman编码与解码(Huffman编码、二叉树)

[问题描述]
对一篇不少于5000字符的英文文章(source.txt),统计各字符出现的次数,实现Huffman编码(code.dat),以及对编码结果的解码(recode.txt)。
[基本要求]
(1) 输出每个字符出现的次数和编码,并存储文件(Huffman.txt)。
(2) 在Huffman编码后,英文文章编码结果保存到文件中(code.dat),编码结果必须是二进制形式,即0 1的信息用比特位表示,不能用字符‘0’和‘1’表示(*)。
(3) 实现解码功能。

源码传送门

传送门:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111

5、排序算法比较(排序)

[问题描述]
利用随机函数产生10个样本,每个样本有50000个随机整数(并使第一个样本是正序,第二个样本是逆序),利用直接插入排序、希尔排序,冒泡排序、快速排序、选择排序、堆排序,归并排序、基数排序8种排序方法进行排序(结果为由小到大的顺序),并统计每一种排序算法对不同样本所耗费的时间。
[基本要求]
(1)原始数据存在文件中,用相同样本对不同算法进行测试;
(2)屏幕显示每种排序算法对不同样本所花的时间;

源码传送门

传送门:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111

6、火车购票(线性表)

[问题描述]
请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。
假设一节车厢有20排、每一排5个座位。为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号,依次类推,第20排是96到100号。
购票时,一个人可能购一张或多张票,最多不超过5张。如果这几张票可以安排在同一排编号相邻的座位,则应该安排在编号最小的相邻座位。否则应该安排在编号最小的几个空座位中(不考虑是否相邻)。
假设初始时车票全部未被购买,现在给了一些购票指令,请你处理这些指令。
[输入格式]
对于所有评测用例,1 ≤ n ≤ 100,所有购票数量之和不超过100。
输入的第一行包含一个整数n,表示购票指令的数量。
第二行包含n个整数,每个整数p在1到5之间,表示要购入的票数,相邻的两个数之间使用一个空格分隔。
[输出格式]
输出n行,每行对应一条指令的处理结果。
对于购票指令p,输出p张车票的编号,按从小到大排序。
[样例]
输入:

4
2 5 4 2

输出:

1 2
6 7 8 9 10
11 12 13 14
3 4

源码传送门

传送门:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111

7、通信管理系统(图)

[问题描述]
你负责管理一个计算机通信系统。
有n台计算机接入了该系统,编号为1~n,它们之间可以互相发送数据。
由于设备条件限制,机器之间不能任意多地发送数据。每两台机器之间均有一个“每日可用额度”的限制,单位为MB/day,表示这两台机器每日可以互相发送的数据量(双方各自向对方发送的数据量之和)的最大值。
最初,任意两台机器的每日可用额度均为0。为了能发送数据,机器管理者需要向你申请额度。每个申请形如u v x y的格式,表示机器u和v的每日可用额度增大x MB/day,持续y天(即从申请当天开始至申请后第y-1天内有效,从第y天开始失效)。不同申请的效果是可以叠加的。
定义每台机器的“通信主要对象”为当前时刻与该机器的每日可用额度最大的机器(如果有并列,则取其中编号最小的机器);如果一台机器与任何机器的每日可用额度均为0,则称其为“通信孤岛”,并认为其没有“通信主要对象”;如果两台机器x和y互为“通信主要对象”,则称它们是一个“通信对”。
每天开始时,你都会先接受若干个额度申请,你需要依次处理这些申请;而后,你将接收到若干个查询某台机器的“通信主要对象”的请求;最后,你可能还希望求出此时的“通信孤岛”和“通信对”各有多少。
请你编写一段程序来实现上述任务。
[输入格式]

第一行:2个正整数n,m,表示机器数和天数。
接下来3m行,每两行描述一天中的事件,格式如下:
+ 第1行:首先是一个非负整数ki,表示当天额度申请的数量。接下来有4ki个非负整数,依次描述每一个额度申请,格式如题面中所述。
+ 第2行:首先是一个非负整数li,表示当天查询“通信主要对象”的数量。接下来有li个正整数,依次表示查询的机器编号,保证编号在[1,n]范围内。
+ 第3行:2个整数pi,qi,取值均为0或1,分别表示当天是否要查询“通信孤岛”和“通信对”的数量。其中pi=1表示需要查询“通信孤岛”的数量,pi=0表示不需要查询;qi的含义同理。

[输出格式]

对于每个查询分别输出一行,一个非负整数表示该查询的答案。
查询按照天数顺序输出,对于同一天内的查询,先按照输入顺序输出所有查询“通信主要对象”的答案,再依次输出查询“通信孤岛”和“通信对”的答案(如果当天需要查询的话)。
如果某台被查询“通信主要对象”的机器是“通信孤岛”,认为查询结果为0。

[样例]
输入:

3 3
2 1 2 2 3 1 3 3 2
1 1
0 0
1 2 3 3 1
2 1 2
0 1
0
2 1 3
1 1

输出:

3
3
3
1
2
0
1
1

源码传送门

传送门:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111

8、【2】词梯(综合)

[问题描述]
词梯:给定两个长度相等的单词,一个作为起点,一个作为终点。每次只改变一个字母,最终,作为起点的单词可以转变为终点的单词。
例如:code->cade->cate->date->data
词梯不是唯一的,如work->play:

work fork form foam flam flay play
work pork perk peak pean plan play
work pork perk peak peat plat play
work pork perk pert peat plat play
work pork porn pirn pian plan play
work pork port pert peat plat play
work word wood pood plod ploy play
work worm form foam flam flay play
work worn porn pirn pian plan play
work wort bort boat blat plat play
work wort port pert peat plat play
work wort wert pert peat plat play

[基本要求]
(1)从https://github.com/dwyl/english-words中下载words.txt作为词汇表;
(2)给定两个长度相等的单词,一个作为起点,一个作为终点,寻找长度最短的词梯。

源码传送门

传送门:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111

9、【2】迷宫问题(栈与队列)

[问题描述]
利用栈操作实现迷宫问题求解。
[基本要求]
(1)从文件中读取数据,生成模拟迷宫地图,不少于20行20列。
(2)给出任意入口和出口,显示输出迷宫路线。

源码传送门

传送门:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111

10、【3】城市巡游赛(树和图)

[问题描述]
有N个城市正在举办厨艺大赛,这些城市的编号为1~N,城市之间有N-1条道路相连,并且城市之间两两可达。每个城市i都有一个里程值Ai:从城市X出发,要达到城市Y的必要条件是存在一条从X到Y的简单路径,且该路径恰好有Ax条边。
为了尽可能多地参加各地比赛,假设你可以从任意城市出发,且可以访问任意城市多次,求最多可以参加多少场比赛。
严格来说,给定一棵树,其中每个节点有权值Ai,如果我们可以从任意节点出发,并经过任意节点多次,你需要求出最多可以到达的城市数量,唯一条件是从i移动到j当且仅当i到j的简单路径上恰好有Ai条边。
[输入格式]

+ 第一行包含N
+ 接下来N-1行包含u,v表示一条边
+ 接下来一行包含N个整数Ai

[输出格式]

输出最多可以访问多少不同的城市

[补充说明]

+ 1≤ui≤N,1≤vi≤N,且ui≠vi
+ 保证输入是树

[样例1]
输入:

5
1 3
3 5
1 4
4 2
1 2 3 3 1

输出:

5

[样例2]
输入:

6
1 2
1 3
2 4
2 5
3 6
1 1 1 1 1 1

输出:

6

[样例3]
输入:

8
1 5
1 6
1 7
1 8
1 2
2 3
3 4
1 2 3 4 5 6 7 8

输出:

4

源码传送门

传送门:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111

11、【4】平衡二叉树操作的演示(查找)

[问题描述]
利用平衡二叉树实现一个动态查找表。
[基本要求]
(1)从文件读取数据
(2)实现动态查找表的三种基本功能:查找、插入和删除。
(3)以可验证的方式输出结果

源码传送门

传送门:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111

标签:输出,play,传送门,work,C++,包裹,2022,数据结构,com
From: https://www.cnblogs.com/codewriter/p/16913698.html

相关文章

  • 【2022-11-21】luffy项目实战(十二)
    一、支付宝支付介绍1.1入门"""1)支付宝API:六大接口https://docs.open.alipay.com/270/105900/2)支付宝工作流程(见下图):https://docs.open.alipay.com/270/105898/......
  • C/C++员工通讯录(链表实现)
    C/C++员工通讯录(链表实现)一、设计一个员工通讯录(如编号、身份证号码、姓名等),用单链表实现员工通讯录的存储和增删改查等操作。通讯录链表的建立;通讯者信息的插入;通讯......
  • C/C++校运动会成绩管理系统
    C/C++校运动会成绩管理系统该系统可以记录校运动会全部运动项目的成绩、得分和排名情况,系统功能项以菜单形式显示。项目包括50米、100米、200米、400米、1500米、各接力项......
  • CSP-S 2022游记
    \(\text{Day-???}\)在机房摆大烂,\(\text{whk}\)大摆特摆,月考喜提班级倒一。都高二了,\(\text{1=}\)都没拿过,菜死了,退役吧。\(\text{Day-??}\)得知\(\text{CSP}\)......
  • 2022.11.21
    关于考试YCC的心路历程……关机代码!好,太好了!年轻人不讲武德!$$气死了,气死了!2小时,写加调,发现样例的负号是中文符号。气死了,气死了!不过大样例。时间很危险了,走人了......
  • C/C++文件压缩与解压(哈夫曼编码)
    C/C++文件压缩与解压(哈夫曼编码)实验四:文件压缩与解压一、实验目的:掌握哈夫曼编码和解码二、实验内容:利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降......
  • C/C++仓库管理系统
    C/C++仓库管理系统四、仓库管理系统问题描述:1.问题描述:已知一工厂有5个仓库(仓库编号、仓库规格),用于保存公司生产的10类产品(产品编号、产品名称、产品规格),任何--......
  • c++命令行传参
    intmain(intargc,char**argv)argc:命令行参数个数(ArgumentCount)argv:命令行参数向量(ArgumentVector)argv是一个字符串数组,双指针代表指向首个字符串的地址和......
  • NOIP2022 游记
    \(\text{Preface}\)和\(\text{CSP}\)游记一样也是边备战边写,为了防止\(\text{NOIP}\)后把这些都忘了写不出来。因为在自己学校考所以没\(\text{CSP}\)游记水,就当做......
  • unctf2022pwn所有题wp
    unctf2022_pwn_all_wpwelcomeUNCTF2022sl("UNCTF&2022")石头剪刀布预测随机数#!/usr/bin/envpython3'''Author:7resp4ssDate:2022-11-1302:17:09LastEditT......