通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"NOIP真题" 试卷中 NOIP第十八届全国青少年信息学奥林匹克联赛初赛试题[2012提高组] 中有题目如下:
第1题
(壳栈)小 Z 设计了一种新的数据结构“新壳栈”。首先,它和传统的栈一样支持压入、弹出操作。此外,其栈顶的前 c 个元素是它的壳,支持翻转操作。其中,c > 2 是一个固定的正整数,表示壳的厚度。小 Z 还希望,每次操作,无论是压入、弹出还是翻转,都仅用与 c 无关的常数时间完成。聪明的你能帮助她编程实现“新壳栈”吗?
程序期望的实现效果如以下两表所示。其中,输入的第一行是正整数 c,之后每行输入都是一条指令。另外,如遇弹出操作时栈为空,或翻转操作时栈中元素不足 c 个,应当输出相应的错误信息。
#include <iostream> using namespace std; const int NSIZE = 100000,CSIZE = 1000; int n, c, r, tail, head, s[NSIZE], q[CSIZE]; //数组 s 模拟一个栈,n 为栈的元素个数 //数组 q 模拟一个循环队列,tail 为队尾的下标,head 为队头的下标 bool direction, empty; int previous(int k){ if (direction) return ((k + c - 2) % c) + 1; else return (k % c) + 1; } int next(int k){ if (direction) ①; else return ((k + c - 2) % c) + 1; } void push(){ int element; cin>>element; if (next(head) == tail) { n++; ②; tail = next(tail); } if (empty) empty = false; else head = next(head); ③= element; } void pop(){ if (empty) { cout<<"Error: the stack is empty!"<<endl; return; } cout<<④<<endl; if (tail == head) empty = true; else { head = previous(head); if (n > 0) { tail = previous(tail); ⑤= s[n]; n--; } } } void reverse(){ int temp; if (⑥== tail) { direction = !direction; temp = head; head = tail; tail = temp; }else cout<<"Error: less than "<<c<<" elements in the stack!"<<endl; } int main(){ cin>>c; n = 0; tail = 1; head = 1; empty = true; direction = true; do{ cin>>r; switch (r) { case 1: push();break; case 2: pop();break; case 3: reverse();break; } } while (r != 0); return 0; }
所属试卷:NOIP第十八届全国青少年信息学奥林匹克联赛初赛试题[2012提高组]
在C++中,用于实现运行时多态性的是。
下列关于构造函数的描述中,错误的是。
下面程序段(int w=4,x=3,y=2,z=1;
在下列字符中,不允许作为C++标识符的是。
下面条语句的输出是( )。
在屏幕上输出Hello World使用的Python语
下列程序查找输入8个整数中的最小数。请仔细阅读他的程序
编写一个函数fun它的功能是:实现两个字符串的连接(使
在软件生产过程中,需求信息的来源是( )。
有以下程序程序的运行结果是( )。
有以下程序:程序的运行结果是。
若k是int类型变量,且有以下for语句:下面关于语句
若有定义double a=22;int i=0,k=1
若有定义语句:则表达式'A'+a+b值的类型是。
请在下面的横线处填上适当内容,以使类的定义完整。
已知x=[1,2,3,2,3],执行语句x.remov
对负数取平方根,即用函数pow(-1,0.5),其中x
已知x={1:2,2:3,3:4},那么表达式sum
Python内置函数___________用来返回数值
若x,y,x,z均为int型变量,则描述"x或y中有一
论述实时信号、非实时信号、可靠信号、不可靠信号四个概念
create procedure是创建存储过程的命令,
在UPDATE触发器中,可以引用一个名为 _____的
(14分)某机器字长为32位的计算机M,采用请求调页存
一棵有 n 个结点的完全二叉树用数组进行存储与表示,已
x=5,y=8时,C语言表达式5-2>=x-1<=y-
如果函数不要求返回值,可用_____来定义函数为空类型
若f[0]=0, f[1]=1,f[n+1]=(f[n
输出:( )
输入: 66553输出: ______________
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2