step4算法设计技术.docx
- 文档编号:26457069
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:9
- 大小:18.01KB
step4算法设计技术.docx
《step4算法设计技术.docx》由会员分享,可在线阅读,更多相关《step4算法设计技术.docx(9页珍藏版)》请在冰豆网上搜索。
step4算法设计技术
目录
算A05缺失的数据(按位排序)1
算A06纪念品分组(贪心法)2
算A07蛇行矩阵3
算A08士兵队列训练问题4
算A09绝对值排序5
算B01kitty猫的基因编码(递归)6
算B02数列(蛮力法)7
算B03统计数字(按位排序)8
算B04四塔问题(递归)9
算B05逆序对个数(蛮力法分治法)10
注:
算表示本题属于算法设计技术,A表示简单,B表示稍难。
算A05缺失的数据(按位排序)
【问题描述】
网络传输中由于受到链路层的最大传输单元(MaximumTransmissionUnit,MTU)的限制,在很多情况下需要对原始的数据报进行分片,使得每一分片可以顺利的传输。
F公司的网络设备根据MTU的限制将每个原始的数据划分成n片,用1~n这n个数字对每个分片进行编号,在目的主机上将这些分片重新组合成原始的数据。
可是在测试中发现一个问题:
经常出现缺失一个数据分片的情况。
公司希望在将分片重新组合前就能知道缺失的数据分片编号。
【数据输入】有多组输入数据,你必须处理到EOF为止。
每组输入数据第一行就一个整数n(2<=n<=105),表示数据分成了n片。
第二行有n-1个以空格隔开的整数,表示目的主机收到的数据分片的编号,由于网络传输的一些因素,数据分片到达的顺序是随机的。
【数据输出】输出缺失的数据片编号。
【样例输入】
5
5321
【样例输出】
4
算A06纪念品分组(贪心法)
【问题描述】
元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。
为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。
为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。
你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。
【数据输入】输入包含多组测试数据,每个测试数据包含n+2行:
第1行包括一个整数w,为每组纪念品价格之和的上限。
第2行为一个整数n,表示购来的纪念品的总件数。
第3~n+2行每行包含一个正整数pi(5<=pi<=w),表示所对应纪念品的价格。
1<=n<=30000,80<=w<=200
【数据输出】对每个测试数据,输出一行,包含一个整数,即最少的分组数目。
相邻两个测试数据间用一个空行隔开。
【样例输入】
100
9
90
20
20
30
50
60
70
80
90
【样例输出】
6
算A07蛇行矩阵
【问题描述】蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
【数据输入】本题有多组数据,每组数据由一个正整数N组成。
(N不大于100)
【数据输出】对于每一组数据,输出一个N行的蛇形矩阵。
两组输出之间不要额外的空行。
矩阵三角中同一行的数字用一个空格分开。
行尾不要多余的空格。
【样例输入】
5
【样例输出】
1361015
25914
4813
712
11
算A08士兵队列训练问题
【问题描述】
某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:
从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。
。
。
,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
【数据输入】本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。
【数据输出】共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。
【样例输入】
2
20
40
【样例输出】
1719
11937
算A09绝对值排序
【问题描述】
输入n(n<=100)个整数,按照绝对值从大到小排序后输出。
题目保证对于每一个测试实例,所有的数的绝对值都不相等。
【数据输入】输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。
【数据输出】对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。
每个测试实例占一行。
【样例输入】
33-42
4012-3
0
【样例输出】
-432
-3210
算B01kitty猫的基因编码(递归)
【问题描述】kitty的基因编码如下定义:
kitty的基因由一串长度2^k(k<=8)的01序列构成,为了方便研究,需要把,01序列转换为ABC编码。
用T(s)来表示01序列s的ABC编码T(s)=‘A'(当S全由'0'组成)T(s)=‘B'(当s全由'1'组成)T(s)=‘C'+T(s1)+T(s2)s1,s2为把s等分为2个长度相等的子串比如T('00')='A'T('00001111')='CAB'
【数据输入】一行,长度为2^k,为kitty猫的01基因编码,有多个数据
【数据输出】一行,由ABC构成的ABC编码
【样例输出】
01001011
【样例输出】
CCCABACCBAB
算B02数列(蛮力法)
【问题描述】
给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:
1,3,4,9,10,12,13,…
(该序列实际上就是:
30,31,30+31,32,30+32,31+32,30+31+32,…)
请你求出这个序列的第N项的值(用10进制数表示)。
例如,对于k=3,N=100,正确答案应该是981。
【数据输入】输入包含多个测试数据。
每个测试数据只有1行,为2个正整数,用一个空格隔开:
kN
(k、N的含义与上述的问题描述一致,且3≤k≤15,10≤N≤1000)
【数据输出】对于每个测试数据输出一个正整数(在所有的测试数据中,结果均不超过2.1*10^9)。
【样例输入】
3100
【样例输出】
981
算B03统计数字(按位排序)
【问题描述】
某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9)。
已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
【数据输入】包含多个测试数据,每个包含n+1行:
第1行是整数n,表示自然数的个数。
第2~n+1行每行一个自然数。
1<=n<=200000,每个数均不超过1500000000(1.5*109)
【数据输出】对每个测试数据输出m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。
每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
相邻两个测试数据间用一个空行隔开。
【样例输入】
8
2
4
2
4
5
100
2
100
【样例输出】
23
42
51
1002
算B04四塔问题(递归)
【问题描述】
“汉诺塔”,是一个众所周知的古老游戏。
现在我们把问题稍微改变一下:
如果一共有4根柱子,而不是3根,那么至少需要移动盘子多少次,才能把所有的盘子从第1根柱子移动到第4根柱子上呢?
为了编程方便,您只需要输出这个结果mod10000的值。
【数据输入】该题含有多组测试数据,每组一个正整数n。
(0 【数据输出】一个正整数,表示把n个盘子从第1根柱子移动到第4根柱子需要的最少移动次数mod10000的值。 【样例输入】 15 【数据输出】 129 算B05逆序对个数(蛮力法分治法) 【问题描述】 有一实数或者字母序列A[1]、A[2]、A[3]、……A[n-1]、A[n],若i<j,并且A[i]>A[j],则称A[i]与A[j]构成了一个逆序对,求字符串A中逆序对的个数。 【数据输入】输入包括多个测试数据,每一行为一个,每个测试数据长度不超过50000。 【数据输出】输出每个数据的逆序对。 【样例输入】 52462326 AEDCB kfeFES54saW 【样例输出】 12 6 35
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- step4 算法 设计 技术