NOIP2014提高组Pascal初赛试题

合集下载

NOIP2014提高组Pascal初赛试题

NOIP2014提高组Pascal初赛试题

第二十届全国青少年信息学奥林匹克联赛初赛提高组Pascal语言试题竞赛时间:2014年10月12日14:30~16:30选手注意:●试题纸共有10页,答题纸共有2页,满分100分。

请在答题纸上作答,写在试题纸上的一律无效。

●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。

一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项)1.以下哪个是面向对象的高级语言()。

A. 汇编语言B. C++C. FortranD. Basic2.1TB代表的字节数量是()。

A. 2的10次方B. 2的20次方C. 2的30次方D. 2的40次方3.二进制数00100100和00010101的和是()。

A. 00101000B. 001010100C. 01000101D. 001110014.TCP协议属于哪一层协议()。

A. 应用层B. 传输层C. 网络层D. 数据链路层5.下列几个32位IP地址中,书写错误的是()。

A. 162.105.136.27B. 192.168.0.1C. 256.256.129.1D. 10.0.0.16.在无向图中,所有顶点的度数之和是边数的()倍。

A. 0.5B. 1C. 2D. 47.对长度为n的有序单链表,若检索每个元素的概率相等,则顺序检索到表中任一元素的平均检索长度为()。

A. n/2B. (n+1)/2C. (n-1)/2D. n/48.编译器的主要功能是()。

A. 将一种高级语言翻译成另一种高级语言B. 将源程序翻译成指令C. 将低级语言翻译成高级语言D. 将源程序重新组合9.二进制数111.101所对应的十进制数是()。

A. 5.625B. 5.5C. 6.125D. 7.62510.若有变量var a: integer; x, y: real;,且a := 7,x := 2.5,y := 4.7,则表达式x + a mod 3 * trunc(x + y) mod 2 div 4的值大约是()。

NOIP提高组初赛历年试题及答案选择题篇

NOIP提高组初赛历年试题及答案选择题篇

NOIP提高组初赛历年试题及答案选择题篇单项选择题(共10-15题,每题1.5分,共计15-22.5分。

每题有且仅有一个正确选项。

)注:答案在末尾NOIP2011-1.在二进制下,1011001+()=1100110。

同普及组NOIP2011-1 A.1011 B.1101 C.1010 D.1111NOIP2011-2.字符“A”的ASCII码为十六进制41,则字符“Z”的ASCII码为十六进制的()。

A.66B.5AC.50D.视具体的计算机而定NOIP2011-3.下图是一棵二叉树,它的先序遍历是()。

A.ABDEFCB.DBEFACC.DFEBCAD.ABCDEFNOIP2011-4.寄存器是()的重要组成部分。

同普及组NOIP2011-6A.硬盘B.高速缓存C.内存D.中央处理器(CPU)NOIP2011-5.广度优先搜索时,需要用到的数据结构是()。

同普及组NOIP2011-11A.链表B.队列C.栈D.散列表NOIP2011-6.在使用高级语言编写程序时,一般提到的“空间复杂度”中的空间是指()。

同普及组NOIP2011-12A.程序运行时理论上所占的内存空间B.程序运行时理论上所占的数组空间C.程序运行时理论上所占的硬盘空间D.程序源文件理论上所占的硬盘空间NOIP2011-7.应用快速排序的分治思想,可以实现一个求第K大数的程序。

假定不考虑极端的最坏情况,理论上可以实现的最低的算法时间复杂度为()。

A.O(n2) B.O(n log n) C.O(n) D.O(1)NOIP2011-8.为解决web应用中的不兼容问题,保障信息的顺利流通,()制定了一系列标准,涉及HTML、XML、CSS等,并建议开发者遵循。

A.微软B.美国计算机协会(ACM)C.联合国教科文组织D.万维网联盟(W3C)NOIP2011-9.体育课的铃声响了,同学们都陆续的奔向操场,按老师的要求从高到低站成一排。

NOIP2014提高组复赛试题day1day2

NOIP2014提高组复赛试题day1day2

CCF全国信息学奥林匹克联赛(NOIP2014复赛提高组dayl1.生活大爆炸版石头剪刀布(rps.cpp/c/pas)【问题描述】石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。

如果两个人出拳样,则不分胜负。

在《生活大爆炸》第二季第8集中出现了一种石头剪刀布的升级版游戏。

升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:斯波克:《星际迷航》主角之一。

蜥蜴人:《星际迷航》中的反面角色。

这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。

现在,小A和小B尝试玩这种升级版的猜拳游戏。

已知他们的出拳都是有周期性规律的,但周期长度不一定相等。

例如:如果小A以“石头-布-石头-剪刀-蜥蜴人-斯波克”长度为6的周期出拳,那么他的出拳序列就是“石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-……”,而如果小B以“剪刀-石头-布-斯波克-蜥蜴人”长度为5的周期出拳,那么他出拳的序列就是“剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-……”已知小A和小B一共进行N次猜拳。

每一次赢的人得1分,输的得0分;平局两人都得0分。

现请你统计N次猜拳结束之后两人的得分。

【输入】输入文件名为rps.in。

第一行包含三个整数:N,NANB分别表示共进行N次猜拳、小A出拳的周期长度,小B出拳的周期长度。

数与数之间以一个空格分隔。

第二行包含NA个整数,表示小A出拳的规律,第三行包含NB个整数,表示小B出拳的规律。

其中,0表示“剪刀”,1表示“石头”,2表示“布”,3表示“蜥蜴人”,4表示“斯波克”。

数与数之间以一个空格分隔。

【输出】输出文件名为rps.out。

输出一行,包含两个整数,以一个空格分隔,分别表示小A、小B的得分。

【数据说明】对于100%勺数据,0<N<200,0<NA&200,0<NB&200。

2.联合权值(link.cpp/c/pas)【问题描述】无向连通图G有n个点,n-1条边。

Noip2014初赛提高组C试题及答案(完整版)

Noip2014初赛提高组C试题及答案(完整版)

Noip2014初赛提高组试题及答案(完整版)提高组C语言试题、单项选择题(每题1.5分,共22.5分)。

A. 162.105.128.27B. 192.168.0.1C. 256.256.129.1D. 10.0.0.16. 在无向图中,所有定点的度数之和是边数的()倍.A. 0.5B. 1C. 2D. 47. 对长度位n的有序单链表,若检索每个元素的概率相等,则顺序检索到表中任一元素的平均检索长度为().A. n/2B. (n+1)/2C. (n-1)/2D. n/48. 编译器的主要功能是().A. 将一种高级语言翻译成另一种高级语言B. 将源程序翻译成指令C. 将低级语言翻译成高级语言D. 将源程序重新组合9. 二进制数111.101所对应的十进制数是().A. 5.625B. 5.5C. 6.125D. 7.62510. 若有变量int a, float x, y,且a=7, x=2.5, y=4.7,则表达式x+a%3*(int)(x+y)%2/4 的值大约是().A. 2.500000B. 2.750000C. 3.500000D. 0.00000011. 有以下结构体说明和变量定义,如图所示,指针结点。

data nextr data n ext* -data n ext1. 以下哪个是面向对象的咼级语言().A.汇编语言B. C++C. FORTRAN2. 1TB代表的字节数量是().A. 2的10次方B. 2的20次方C. 2的3. 二进制数00100100 和00010101 的和是().A. 00101000B. 001010100C. 010001014. TCP协议属于哪一层协议().A.应用层B.传输层C.网络层D.D. Basic30次方D. 2的40次方D. 00111001数据链路层).P、q、r分别指向一个链表中的三个续struct node {int data;struct node *n ext;} *P ,*q,*r;现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下程序段中错误的是().A. q->n ext = r->n ext; p-> n ext = r; r->n ext = q;B. p->n ext = r; q->n ext = r->n ext; r->next = q;C. q->next = r->n ext; r->n ext = q; p->n ext = r;D. r->next = q; q->next = r->n ext; p->n ext = r;12. 同时查找2n个数中的最大值和最小值,最少比较次数为A. 3(n-2)/2B. 4n-2C. 3n-2D. 2n-213. 设G是有6个结点的完全图,要得到一颗生成树,需要从().G中删去()条边.A. 6B. 9C. 10D. 1514. 以下时间复杂度不是 0(n 1 2 3 4 5)的排序方法是().A. 插入排序B. 归并排序C. 冒泡排序15. 以下程序实现了找第二小元素的算法。

NOIP提高组初赛历年试题及答案阅读题篇

NOIP提高组初赛历年试题及答案阅读题篇

NOIP提高组初赛历年试题及答案阅读题篇阅读程序写结果(共4 题,每题8 分,共计32 分)阅读程序的最好方法并非是依次从头到尾。

程序不像迷语,我们无法从末尾几页找到答案,也不像一本引人入胜的书籍,只需直接翻到褶皱最多的那几页,我们就能找到最精彩的片断。

因此我们在阅读程序时,最好逐一考察研究每一段代码,搞清楚每一段代码的来龙去脉,理解每一段代码在程序中所起的作用,进而形成一个虚拟的程序结构,并以此为基础来进行阅读。

1、分层读:高层入手,逐层深入,正确理解程序。

2、写注解:固化、总结、提炼已有的理解成果。

3、先模拟:根据代码顺序跟踪变量,模拟运算。

4、找规律:先模拟几次循环后,找出背后的规律。

5、看功能:从代码结构和运算结果判断程序功能。

6、猜算法:有时不知道算法,通过结构和函数猜一猜。

7、换方法:了解程序本质后,换一个熟悉的方法试试。

对大多数人来说,写程序是令人开心的一件事情,读别人的程序却很痛苦,很恐惧,宁愿自己重写一遍。

其实读到好的程序,就像读一篇美文,令人心旷神怡,豁然开朗,因为这背后是一个人的思维,甚至整个人生。

阅读别人的程序不仅可以巩固自己的知识,启发自己的思维,提升自己的修养,让你收获满满,其实,这也是在学习、在竞赛、在工作中的最重要、最常用的基本功。

如果说写程序是把自己的思维转化为代码,读程序就是把代码转化为你理解的别人的思维。

当你阅读程序时有强烈的代入感,像演员一样,真正进入到编剧的精神世界,面部表情也随之日渐丰富起来。

祝贺你!你通关了!总之,看得多,码得多,拼得多,你就考得多……NOIP2011-1.#include <iostream>#include <cstring>using namespace std;const int SIZE = 100;int main(){int n,i,sum,x,a[SIZE];cin>>n;memset(a,0,sizeof(a));for(i=1;i<=n;i++){cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){i++;sum+=a[i];}cout<<i<<endl;return 0;}输入:114 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i值(中位数),而不是sum,也不是a[x]输出:3NOIP2011-2.#include <iostream> using namespace std; int n;void f2(int x,int y); void f1(int x,int y) {if(x<n)f2(y,x+y);}void f2(int x,int y) {cout<<x<<' ';f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入:30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出:1 2 5 13 34NOIP2011-3.#include <iostream>using namespace std;const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]);visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++){cin>>a>>b>>c;e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++)visited[i]=false;ans=0;for(i=1;i<=n;i++)dfs(i,0);cout<<ans<<endl;return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则ans=len,可以说明这是个在图中用DFS找最长的路径的程序。

NOIP提高组初赛历年试题及答案完善题篇

NOIP提高组初赛历年试题及答案完善题篇

for (i = m; i>= 1; i--){
used[data[i]] = false;
for (j =data[i]+1; j <= n; j++) if (!used[j]){
used[j] =true;
data[i] = j;
flag = true;
break;
}
if (flag)
{
for (k = i+1;k <= m; k++)
solve(left, j –1, deep + 1);
if(j<right)
solve(j+ 1, right, deep + 1);
}
int main()
{
inti;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
maxDeep=0;
solve(1,n,1);
cout<<maxDeep<<' '<<num<<endl;
}
void push()
for (j = 1; j<=n; j++) if (!used[j]){
data[k] = j;
used[j] =true;
break;
}
break;
}
}
}
}
NOIP2012-2.新壳栈 小 Z 设计了一种新的数据结构“新壳栈”。首先,它和传统的栈一样支持压入、弹 出操作。此外,其栈顶的前 c 个元素是它的壳,支持翻转操作。其中,c> 2 是 一个固定的正整数,表示壳的厚度。小 Z 还希望,每次操作,无论是压入、弹 出还是翻转,都仅用与 c 无关的常数时间完成。聪明的你能帮助她编程实现“新 壳栈”吗? 程序期望的实现效果如以下两表所示。其中,输入的第一行是正整数 c,之后每 行输入都是一条指令。另外,如遇弹出操作时栈为空,或翻转操作时栈中元素不 足 c 个,应当输出相应的错误信息。

noip提高组初赛试题

noip提高组初赛试题

noip提高组初赛试题NOIP(全称为:全国青少年信息学奥林匹克竞赛)提高组初赛试题是一项重要的计算机竞赛,旨在选拔优秀的青少年计算机才华,锻炼他们的编程和解题能力。

这项竞赛的题目分为多个部分,包括算法设计与分析、数据结构、离散数学、动态规划等,挑战着选手的智力和思维方式。

本文将对NOIP提高组初赛试题进行全面分析与讨论。

第一部分:算法设计与分析在这一部分,选手将面临各种算法问题,需要设计高效的算法来解决。

例如,题目中可能会给出一个复杂的图结构,要求选手找到最短路径或最大流等问题的解决方案。

此时,选手需要充分理解各种图算法,并结合题目要求给出合理的算法设计。

第二部分:数据结构数据结构是计算机程序设计中的重要基础。

在这一部分中,选手可能会面对各种数据结构相关的问题,如树、队列、堆、图等。

选手需要灵活运用不同类型的数据结构,并结合题目要求进行正确的操作。

第三部分:离散数学离散数学是计算机科学的重要分支,对于理解和解决问题具有重要作用。

在这一部分中,选手可能会遇到图论、集合论、逻辑推理等题目。

选手需要具备扎实的离散数学知识,并能够将其应用于实际问题的解决。

第四部分:动态规划动态规划是一种解决复杂问题的算法设计技巧,也是NOIP提高组初赛试题中常出现的题型。

选手需要根据题目要求,寻找最优子结构并利用动态规划算法进行求解。

这需要选手有很高的抽象思维和编程能力。

总结:NOIP提高组初赛试题的内容丰富多样,不仅考察了选手的编程实力,还要求他们具备扎实的数学和算法基础。

通过参与这项竞赛,选手可以提高自己的逻辑思维能力、问题解决能力和编程技巧,同时也为将来的学习和工作打下坚实的基础。

总之,NOIP提高组初赛试题的挑战性和多样性,为青少年计算机爱好者提供了一个锻炼自身能力的平台。

通过认真思考和努力实践,选手可以在这项竞赛中不断成长,并取得优异的成绩。

祝愿所有参加NOIP提高组初赛的选手能够取得理想的成绩,为未来的计算机领域贡献自己的力量!。

NOIP2014_day1提高组(2019.10.26)

NOIP2014_day1提高组(2019.10.26)

bird.out 0 3
【输入输出样例说明】 如下图所示,蓝色直线表示小鸟的飞行轨迹,红色直线表示管道。
第 6 页共 7 页
提高组 day1
全国信息学奥林匹克联赛( NOIP2014)复赛
提高组 day1
【数据范围】 对于 30%的数据: 5≤n≤ 10 ,5≤m ≤10 ,k=0 ,保证存在一组最优解使得同一单位时间最多
ቤተ መጻሕፍቲ ባይዱ
【输出】
输出文件名为 bird.out 。 共两行。
第一行,包含一个整数,如果可以成功完成游戏,则输出
1,否则输出 0。
第二行,包含一个整数,如果第一行为 1,则输出成功完成游戏需要最少点击屏幕数,
否则,输出小鸟最多可以通过多少个管道缝隙。
第 5 页共 7 页
全国信息学奥林匹克联赛( NOIP2014)复赛
上玩家点击屏幕后,小鸟在下一位置上升的高度
X,以及在这个位置上玩家不点击屏幕时,
小鸟在下一位置下降的高度 Y。
接下来 k 行,每行 3 个整数 P,L,H,每两个整数之间用一个空格隔开。每行表示一
个管道,其中 P 表示管道的横坐标, L 表示此管道缝隙的下边沿高度为 L,H 表示管道缝隙
上边沿的高度(输入数据保证 P 各不相同,但不保证按照大小顺序给出) 。
4、只提供 Linux 格式附加样例文件。 5、特别提醒:评测在当前最新公布的
准。
NOI Linux 下进行,各语言的编译器版本以其为
第 1 页共 7 页
全国信息学奥林匹克联赛( NOIP2014)复赛
提高组 day1
1.生活大爆炸版石头剪刀布
(rps.cpp/c/pas)
【问题描述】 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二十届全国青少年信息学奥林匹克联赛初赛提高组Pascal语言试题竞赛时间:2014年10月12日14:30~16:30选手注意:●试题纸共有10页,答题纸共有2页,满分100分。

请在答题纸上作答,写在试题纸上的一律无效。

●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。

一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项)1.以下哪个是面向对象的高级语言()。

A. 汇编语言B. C++C. FortranD. Basic2.1TB代表的字节数量是()。

A. 2的10次方B. 2的20次方C. 2的30次方D. 2的40次方3.二进制数00100100和00010101的和是()。

A. 00101000B. 001010100C. 01000101D. 001110014.TCP协议属于哪一层协议()。

A. 应用层B. 传输层C. 网络层D. 数据链路层5.下列几个32位IP地址中,书写错误的是()。

A. 162.105.136.27B. 192.168.0.1C. 256.256.129.1D. 10.0.0.16.在无向图中,所有顶点的度数之和是边数的()倍。

A. 0.5B. 1C. 2D. 47.对长度为n的有序单链表,若检索每个元素的概率相等,则顺序检索到表中任一元素的平均检索长度为()。

A. n/2B. (n+1)/2C. (n-1)/2D. n/48.编译器的主要功能是()。

A. 将一种高级语言翻译成另一种高级语言B. 将源程序翻译成指令C. 将低级语言翻译成高级语言D. 将源程序重新组合9.二进制数111.101所对应的十进制数是()。

A. 5.625B. 5.5C. 6.125D. 7.62510.若有变量var a: integer; x, y: real;,且a := 7,x := 2.5,y := 4.7,则表达式x + a mod 3 * trunc(x + y) mod 2 div 4的值大约是()。

A. 2.500000B. 2.750000C. 3.500000D. 0.00000011.有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。

typeptr = ^node;node = recorddata: integer;next: ptr;end;varp, q, r: ptr;现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下程序段中错误的是()。

A. q^.next = r^.next; p^.next = r; r^.next = q;B. p^.next = r; q^.next = r^.next; r^.next = q;C. q^.next = r^.next; r^.next = q; p^.next = r;D. r^.next = q; q^.next = r^.next; p^.next = r;12.同时查找2n个数中的最大值和最小值,最少比较次数为()。

A. 3(n-2)/2B. 4n-2C. 3n-2D. 2n-213.设G是有6个结点的完全图,要得到一棵生成树,需要从G中删去()条边。

A. 6B. 9C. 10D. 1514.以下时间复杂度不是O(n2)的排序方法是()。

A. 插入排序B. 归并排序C. 冒泡排序D. 选择排序15.以下程序段实现了找第二小元素的算法。

输入是n个不等的数构成的数组S,输出S中第二小的数SecondMin。

在最坏情况下,该算法需要做()次比较。

if S[1] < S[2] thenbeginFirstMin := S[1];SecondMin := S[2];endelsebeginFirstMin := S[2];SecondMin := S[1];end;for i := 3 to n doif S[i] < SecondMin thenif S[i] < FirstMin thenbeginSecondMin := FirstMin;FirstMin := S[i];endelseSecondMin := S[i];A. 2nB. n-1C. 2n-3D. 2n-2二、不定项选择题(共5题,每题1.5分,共计7.5分;每题有一个或多个正确选项,多选或少选均不得分)1.若逻辑变量A、C为真,B、D为假,以下逻辑运算表达式为真的有()。

A. (B ˅ C ˅ D) ˅ D ˄ AB. ((¬A ˄B) ˅ C) ˄ ¬BC. (A ˄B) ˅ (C ˄ D ˅ ¬A)D. A ˄ (D ˅ ¬C) ˄ B2.下列()软件属于操作系统软件。

A. Microsoft WordB. Windows XPC. AndroidD. Mac OS XE. Oracle3.在NOI比赛中,对于程序设计题,选手提交的答案不得包含下列哪些内容()。

A. 试图访问网络B. 打开或创建题目规定的输入/输出文件之外的其他文件C. 运行其他程序D. 改变文件系统的访问权限E. 读写文件系统的管理信息4.以下哪些结构可以用来存储图()。

A. 邻接矩阵B. 栈C. 邻接表D. 二叉树5.下列各无符号十进制整数中,能用八位二进制表示的数有()。

A. 296B. 133C. 256D. 199三、问题求解(共2题,每题5分,共计10分;每题全部答对得5分,没有部分分)1.由数字1,1,2,4,8,8所组成的不同的四位数的个数是_________。

2.如图所示,图中每条边上的数字表示该边的长度,则从A到E的最短距离是_________。

四、阅读程序写结果(共4题,每题8分,共计32分)1.vara, b, i, tot, c1, c2: integer;beginreadln(a, b);tot := 0;for i := a to b dobeginc1 := i div 10;c2 := i mod 10;if (c1 + c2) mod 3 = 0 theninc(tot);end;writeln(tot);end.输入:7 31输出:_________2.varn, m: integer;function fun(n, minNum, maxNum: integer): integer;var tot, i: integer;beginif n = 0 thenexit(1);tot := 0;for i := minNum to maxNum dotot := tot + fun(n - 1, i + 1, maxNum);exit(tot);end;beginreadln(n, m);writeln(fun(m, 1, n));end.输入:6 3输出:_________3.constSIZE = 100;vardict: array [1..SIZE] of string;rank, ind: array [1..SIZE] of integer;i, j, n, tmp: integer;beginreadln(n);for i := 1 to n dobeginrank[i] := i;ind[i] := i;readln(dict[i]);end;for i := 1 to n - 1 dofor j := 1 to n - i doif dict[ind[j]] > dict[ind[j + 1]] thenbegintmp := ind[j];ind[j] := ind[j + 1];ind[j + 1] := tmp;end;for i := 1 to n dorank[ind[i]] := i;for i := 1 to n dowrite(rank[i], ' ');writeln;end.输入:7aaaababbbaaaaaacccaa输出:_________4.constSIZE = 100;varalive: array [1..SIZE] of integer;n, m, num, i, j: integer;function next(num: integer): integer;beginrepeatinc(num);if num > n thennum := 1;until alive[num] <> 0;exit(num);end;beginread(n, m);for i := 1 to n doalive[i] := 1;num := 1;for i := 1 to n dobeginfor j := 1 to m - 1 donum := next(num);write(num, ' ');alive[num] := 0;if i < n thennum := next(num);end;writeln;end.输入:11 3输出:_________五、完善程序(每题14分,共计28分)1.(双栈模拟数组)只使用两个栈结构stack1和stack2,模拟对数组的随机读取。

作为栈结构,stack1和stack2只能访问栈顶(最后一个有效元素)。

栈顶指针top1和top2均指向栈顶元素的下一个位置。

输入第一行包含两个整数,分别是数组长度n和访问次数m,中间用单个空格隔开。

第二行包含n个整数,依次给出数组各项(数组下标从0到n-1)。

第三行包含m个整数,需要访问的数组下标。

对于每次访问,输出对应的数组元素。

(前两空每空2.5分,其余每空3分,共14分)constSIZE = 100;varstack1, stack2: array [0..SIZE] of integer;top1, top2: integer;n, m, i, j: integer;procedure clearStack();vari: integer;beginfor i := top1 to SIZE dostack1[i] := 0;for i := top2 to SIZE dostack2[i] := 0;end;beginread(n, m);for i := 0 to n - 1 doread(stack1[i]);beginread(i);while (i < top1 - 1) dobegindec(top1);inc(top2);end;while (i > top1 - 1) dobegindec(top2);inc(top1);end;clearStack();end;end.2.(最大子矩阵和)给出m行n列的整数矩阵,求最大的子矩阵和(子矩阵不能为空)。

相关文档
最新文档