通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"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]的子序列。
2)当 t 是 s 的子序列时,输出一定不为 0。
正确
错误
所属试卷:CSP-S1提高级初赛试卷[2019]
下列有关一维数组a的定义中,语法正确的是。
下列有关抽象类和纯虚函数的叙述中,错误的是
对下二叉树进行中序遍历的结果是( )。
请在下面程序的横线处填上适当字句,以使程序完整,并使程
已知 x={1:2,2:3},那么表达式 x.get
已知x=(1,2,3,4),那么执行x[0]=5之后,
输出如下格式的小九九1*1=11*2=2 2*2= 4
以下对CSV格式描述正确的是( )。
若在 main函数中定义,char*s ="hel
假设有如下代码:缺不能使float类型变量k得到正确数
以下程序( )。
Redhat 9.0默认的文件系统类型为
你使用命令“vi /etc/inittab”查看该文件
MYSQL并发控制的主要方法是采用 _____ 。
查看MySQL服务器上有哪些数据库的命令是
选择数据库TEST为当前数据库的命令是 。
MySQL提供了下面4种事务隔离级别,但只有 ____
curseek是已定义的游标,关闭该游标的语句为 __
若某线性表最常用的操作是存取任一指定序号的元素和在最后
规范化理论是关系数据库进行逻辑设计的理论依据,根据这个
在C++中,下面哪个关键字用于声明一个变量,其值不能被
(13分)对于有向图,如果一个顶点的出度大于入度,则这
当a=3,b=2,c=1时,执行以下程序段后a=___
设有以下共用体类型说明和变量定义,则变量a在内存所占字
gets函数用来输入一个字符串。
(RMQ 区间最值问题)给定序列a0,⋯,an-1,和
(哥德巴赫猜想) 哥德巴赫猜想是指,任一大于 2 的偶
关于ASCII,下面哪个说法是正确的:
在下列关于计算机语言的说法中,正确的有( )。
(2010) 16 + (32) 8的结果是( )。
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2