61 lines
5.2 KiB
Markdown
61 lines
5.2 KiB
Markdown
|
|
练习4-1:
|
|||
|
|
某种聊天工具,每个好友的id都是唯一的,当用户接收到信息后,如果会话窗口之前没有与该好友的聊天信息,则在通信列表里,会将新
|
|||
|
|
接收的消息的好友id置顶,如果会话窗口中已有与该好友的聊天信息,则将该好友的id移动到通讯列表的顶端。请根据要求实现该功能。
|
|||
|
|
输入:第一行为整数N,代表有N组测试数据,接下来的N组测试中,第一行为整数T,代表有T条通讯,第二行有T个整数,按时间先后顺序表示接收到讯息的好友id。
|
|||
|
|
输出:按照通讯列表从上到下的顺序输出好友id,每个id以空格分隔。
|
|||
|
|
注:只支持一组测试数据即可。
|
|||
|
|
样例输入: 样例输出:
|
|||
|
|
![[3a02555e24cab50917acb282f461237.png]]![[7a0aa8773d0a7158d0f5105b1af598d.png]]
|
|||
|
|
|
|||
|
|
练习4-3:
|
|||
|
|
有两组数据分别是{10,15,2,8,22,11}、{1,5,10,22,4,8,33,6},将这两组数据分别存储在list容器中,并将两个链表合并,合并之后删除重复
|
|||
|
|
元素,对链表中的值从小到大排序。
|
|||
|
|
|
|||
|
|
练习4-6
|
|||
|
|
假设一个算术表达式中可以包含三种符号:圆括号“(”和“)”、方括号“[”
|
|||
|
|
和“]”、花括号“{”和“}”,且这三种括号可按任意次序嵌套使用。编写判别
|
|||
|
|
给定表达式中所含的括号是否正确配对的算法
|
|||
|
|
|
|||
|
|
练习6-2:set
|
|||
|
|
现有n个正整数,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次)。
|
|||
|
|
|
|||
|
|
练习7-1:set
|
|||
|
|
计算集合的并。结果不能有重复元素。
|
|||
|
|
![[0bb15f78462e86158422796120dc207.png]]![[f59eac4e6d3133f2f5858a8acb8686c.png]]
|
|||
|
|
|
|||
|
|
练习5-2:map
|
|||
|
|
按字典序统计下面这段文字中单词出现的次数
|
|||
|
|
It was the best of times, and it was the worst of times. It was the age of wisdom, and it was the age of foolishness. It was the epoch of belief, and it was the epoch of incredulity. It was the season of light, and it was the season of darkness. It was the spring of hope, and it was the winter of despair. We had everything before us, and we had nothing before us. We were all going direct to Heaven, and we were all going direct the other way. In short, the period was so far like the present period. That some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only.
|
|||
|
|
|
|||
|
|
练习7-2:multimap或map嵌套
|
|||
|
|
小A经营着一个不大的水果店。他认为生存之道就是经营最受顾客欢迎的水果。现在他想要一份水果销售情况的明细表,这样就可以很容易掌握所有水果的销售情况了。小A告诉你每一笔销售记录的水果名称,产地和销售的数量,请你帮他生成明细表。
|
|||
|
|
![[6be0838f13e72aec326d619f0b71332.png]]![[2b156b84355b2f971688672c938db99.png]]
|
|||
|
|
|
|||
|
|
练习5-1:容器vector、排序、插入、删除
|
|||
|
|
杰克船长挖掘到一个宝藏,里面有各种各样的财宝,每种财宝一堆,杰克船长打算每次将两堆财宝合并,直到将这些财宝合并为一堆,显
|
|||
|
|
然,经过n-1次合并之后,财宝会成为1堆,假定消耗的体力为两堆财宝的重量之和,为了将这批宝藏搬运到船上,杰克船长必须保证合并
|
|||
|
|
时花费的体力最少,你的任务是设计合并方案,计算出最小的体力消耗值。
|
|||
|
|
输入:第一行一个整数N表示有N组测试数据,
|
|||
|
|
接下来的N组测试数据,第一行整数M表示有M种财宝,下一行包括M个整数,表示每种财宝的重量。
|
|||
|
|
输出:消耗的最小体力值
|
|||
|
|
![[12407f4de1c3a66578d2e8f82d4c51f.png]]![[d51e2d4d5194acd69a2d21ea46db3fd.png]]![[2573882d9beaa8ae813e1dc759981b1.png]]
|
|||
|
|
|
|||
|
|
练习8-1:栈和数组
|
|||
|
|
小A在纸上写了一个串,只包含’(和 ’)’。一个’(能唯一匹配一个’),但是一个匹配的’(必须出现在')之前。请判断小A写的字符
|
|||
|
|
串能否括号完全匹配,如果能,输出配对的括号的位置(匹配的括号不可以交叉,只能嵌套)。
|
|||
|
|
![[b81c8e32fb279b599b41bb069fde712.png]]![[498a6e3e108ad1ba52f6c84f6b00815.png]]
|
|||
|
|
|
|||
|
|
练习8-2:栈和双端队列deque
|
|||
|
|
小A每天都在用一款名为“小A浏览器”的软件。在这个浏览器中,一共三种操作:打开页面、回退和前进。它们的功能如下:
|
|||
|
|
打开页面:在地址栏中输入网址,并跳转到网址对应的页面;
|
|||
|
|
回退:返回到上一次访问的页面;
|
|||
|
|
前进:返回到上次回退前的页面,如果上一次操作是打开页面,那么将无法前进。
|
|||
|
|
现在,小A打开浏览器,进行了一系列操作,你需要输出他每次操作后所在页面的网址。
|
|||
|
|
![[7ae7b55e7def6eb5bad45d7ad6f01c9.png]]![[2e672494682fd2377a55eadc65f4040.png]]
|
|||
|
|
|
|||
|
|
练习4-2:最后练
|
|||
|
|
在一项比赛中,有五位参赛选手分别是A、B、C、D、E,设计一个Player类,数据成员包括选手的姓名和分数。选手的分数按照如下方
|
|||
|
|
式产生:10名裁判对每位选手打分,去掉一个最高分,再去掉一个最低分,剩余的分数取平均值。最后按照分数从高到低的顺序输出选手
|
|||
|
|
的姓名和得分信息。
|
|||
|
|
提示和要求:用STL完成本题目,用vector容器存放每位选手的信息,每位选手的分数可放入双端队列中,用sort()排序后去掉两端,再求
|
|||
|
|
平均值,用sort()对vector排序
|