通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"CSP考试" 试卷中 CSP-S1提高级初赛试卷[2019] 中有题目如下:
第1题
本题t是s的子序列的意思是:从s中删去若干个字符,可以得到t。特别的,如果s == t,那么t也是s的子序列;空串是任何串的子序列。例如“acd”是“abcde”的子序列,“acd”是“acd”的子序列,但“acd”不是“abcde”的子序列。
S[x..y]表示s[x]…s[y]共 y-x+1y−x+1 个字符构成的字符串,若 x>yx>y 则s[x..y]是空串。t[x..y]同理。
#include <iostream> #include <string> using namespace std; const int max1 = 202; string s, t; int pre[max1], suf[max1]; int main() { cin >> s >> t; int slen = s.length(), tlen= t.length(); for (int i = 0, j = 0; i < slen; ++i) { if (j < tlen && s[i] == t[j]) ++j; pre[i] = j;// t[0..j-1]是s[0..i]的子序列 } for (int i = slen - 1, j = tlen - 1; i >= 0; --i) { if(j >= 0 && s[i] == t[j]) --j; suf[i]= j; //t[j+1..tlen-1]是s[i..slen-1]的子序列 } suf[slen] = tlen -1; int ans = 0; for (int i = 0, j = 0, tmp= 0; i <= slen; ++i) { while (j <= slen && tmp >= suf[j] + 1) ++j; ans = max(ans, j - i - 1); tmp = pre[i]; } cout << ans << endl; return 0; }
提示:
t[0..pre[i]-1]是s[0..i]的子序列;
t[suf[i]+1..tlen-1]是s[i..slen-1]的子序列。
1)程序输出时,suf数组满足:对任意 0≤i<slen,suf[i]≤suf[i+1]。
正确
错误
所属试卷:CSP-S1提高级初赛试卷[2019]
有如下类定义,编译时发现有一处语法错误,对这个错误最准
下列程序向JApplet中增加了一个按钮,横线处应填入
在数据管理的三个发展阶段中,数据的共享性好且冗余度最小
在线性表的顺序存储结构中,其存储空间连续,各个元素所占
给定程序中,函数fun的功能是:将形参n中,各位上为偶
请在下面程序的横线处填上适当字句,以使程序完整,并使程
表达式’abcdefg’.split(‘d’)的值为_
random模块中_______方法的作用是将列表中的
_________命令既可以删除列表中的一个元素,也可
表达式type(3+4j)in(int,float,c
请阅读下面的程序,在空白处填写正确的代码,该程序的功能
以下printf语句中的负号的作用是_________
用于循环体中退出本层循环的语句是___________
下列排序方法中,若将顺序存储更换为链式存储,则算法的时
在下列分区中,Linux默认的分区是( )
如果一个关系中每个属性都是不可再分的,则该关系属于__
二叉树的第I层上最多含有结点数为
意思是( )
规范化理论是关系数据库进行逻辑设计的理论依据,根据这个
在 TCP/IP 参考模型中,由传输层相邻的下一层实现
功能:求出二维数组外围元素之和,作为函数值返回。二维数
定义int a[2][3];,表示数组a中的元素个数是
当函数的类型与return语句后表达式的值的类型不一致
斐波那契数列的定义为:F1=1,F2=1,Fn=Fn-
(最小区间覆盖)给出 n个区间,第 i个区间的左右端点
(最长路径)给定一个有向无环图,每条边长度为 1,求图
下列选项中不属于图像格式的是 ( ) 。
已知带权有向图G上的所有权值均为正整数,记顶点u到顶点
LZW 编码是一种自适应词典编码。在编码的过程中,开始
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2