- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
完善程序专项练习完善程序专项练习
完善程序专项练习 百度 Pascal 吧公开培训教材
完善程序专项练习
1. NOIP2013 提高组
(序列重排)全局数组变量 a 定义如下:
const int SIZE = 100;
var a:array [1..size] of integer; n:integer;
它记录着一个长度为 n 的序列 a[1], a[2], …, a[n]。
现在需要一个函数,以整数 p (1 ≤ p ≤ n)为参数,实现如下功能:将序列
a 的前 p 个数与后 n – p 个数对调,且不改变这 p 个数(或 n – p 个数)
之间的相对位置。例如, 长度为 5 的序列 1, 2, 3, 4, 5,当 p = 2 时重排
结果为 3, 4, 5, 1, 2。
有一种朴素的算法可以实现这一需求,其时间复杂度为 O(n)、空间复杂度为 O
(n):
procedure swap1(p : longint);
var
i, j : longint;
b : array[1..SIZE] of longint;
begin
for i := 1 to p do
b[ (1)] := a[i];
for i := p + 1 to n do b[i - p] := a[i];
for i := 1 to n do
a[i] := b[i];
end;
我们也可以用时间换空间,使用时间复杂度为 O(n2)、空间复杂度为 O(1)的算
法:
procedure swap2(p : longint);
var
i, j, temp : longint;
begin
for i := p + 1 to n do begin
temp := a[i];
for j := i downto (2)do //(2 分)
a[j] := a[j - 1];
第 1 页,共 10 页
完善程序专项练习 百度 Pascal 吧公开培训教材
(3) := temp; //(2 分)
end;
end;
事实上,还有一种更好的算法,时间复杂度为 O(n)、空间复杂度为 O(1):
procedure swap3(p : longint);
var
start1, end1, start2, end2, i, j, temp : longint;
begin
start1 := 1;
end1 := p;
start2 := p + 1;
end2 := n;
while true do
begin
i := start1;
j := start2;
while (i = end1) and (j = end2) do begin
temp := a[i];
a[i] := a[j];
a[j] := temp; inc(i); inc(j);
end;
if i = end1 then start1 := i
else
if (4)then
begin
start1 := (5) ;
end1 := (6) ;
start2 := j;
end
else
break;
end;
end;
第 2 页,共 10 页
完善程序专项练习 百度 Pascal 吧公开培训教材
2.NOIP2013 普及组
(二叉查找树)二叉查找树具有如下性质:每个节点的值都大于其左子树上所有
节点的值、小于其右子树上所有节点的值。试判断一棵树是否为二叉查找树。
输入的第一行包含一个整数 n,表示这棵树有 n 个顶点,编号分别为 1, 2, …,
n,其中编号为 1 的为根结点。之后的第 i 行有三个数 value, left_child, rig
ht_child,分别表示该节点关键字的值、左子节点的编号、右子节点的编号;如
果不存在左子节点或右子节点,则用 0 代替。输出 1表示这棵树是二叉查找树,
输出 0 则表示不是。
program Bst;
const SIZE = 100;
c
您可能关注的文档
- 安徽工贸职业技术学院安徽工贸职业技术学院.ppt
- 安徽省专精特新中小企业认定标准和程序安徽省专精特新中小企业认定标准和程序.doc
- 安徽理工大学2014届就业质量报告安徽理工大学2014届就业质量报告.pdf
- 安徽省前期物业服务合同范本安徽省前期物业服务合同范本.doc
- 安徽皖东南初中三校2013年九年级第一次联考英语卷安徽皖东南初中三校2013年九年级第一次联考英语卷.pdf
- 安全教育讲义2010.7安全教育讲义2010.7.ppt
- 安徽省合肥市2008年高三年级第一次教学质量检测-数学理安徽省合肥市2008年高三年级第一次教学质量检测-数学理.pdf
- 安徽省当涂县四校2013届九年级第三次中考模拟联考化学试题安徽省当涂县四校2013届九年级第三次中考模拟联考化学试题.pdf
- 安徽省安庆市2014-2015学年高二学业质量检测英语试题 - 副本安徽省安庆市2014-2015学年高二学业质量检测英语试题 - 副本.pdf
- 安徽省安庆市2014-2015学年高二学业质量检测历史试题 - 副本安徽省安庆市2014-2015学年高二学业质量检测历史试题 - 副本.pdf
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)