通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"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]的子序列。
5)若 tlen = 10,输出为 0 ,则 slen 最小为:
10
12
0
1
所属试卷:CSP-S1提高级初赛试卷[2019]
下列关于虚函数的说明中,正确的是。
已知函数f的原型是void f(int*a, long
if语句的语法格式可描述为:格式1:if(<条件>)<
绐定程序MODI1.C中函数fun的功能是:从低位开始
有两个关系R和T如下:则由关系R得到关系T的操作是(
有如下程序程序运行后的输出结果是( )。
以下选项中非法的C语言字符常量是。
下面程序中A是抽象类。请在下面程序的横线处填上适当内容
正则表达式元字符___________用来表示该符号前
已知列表x中包含超过5个以上的元素,那么表达式x=x[
_________命令既可以删除列表中的一个元素,也可
202.196.100.1是何类地址( )
叙述Linux操作系统的三个主要部分及其功能。答:内核
要显示内存用量用什么命令?
在其父目录不存在时先创建父目录的命令。答:mkdir
在DELETE触发器中,可以引用一个名为 ____的关
创建主键约束(PRIMARY KEY)或唯一约束(UN
(8 分)假设计算机 M 的主存地址为 24 位,按字
(10 分)现有 n(n>100000)个数保存在一维
下列关于多道程序系统的叙述中,不正确的是( )。
getchar函数的原型(函数说明)在stdio.h内
从函数的形式上看,函数分为无参函数和_____两种类型
函数不可以进行嵌套定义,但可以进行嵌套_____。
程序运行后的输出结果是
有以下程序若想通过键盘输入,使得a1的值为12,a2的
有三个关系R,S和T如下图所示,则由关系R和S得到关系
假设输入的n 和 m都是正整数,x和 y都是在 [1,
一次期末考试,某班有 15人数学得满分,有 12人语文
Linux 下可执行文件的默认扩展名为( )
输入:wer2345d-h454-82qqq 输出:_
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2