通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"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]
以下代码执行后,book.txt 文件的内容是( )。
结构化程序设计的3种结构是( )。
在一棵二叉树上,第5层的结点数最多是( )。
下列关于栈和队列的描述中,正确的是( )。
若有定义语句以下选项中能够输出"OK"的语句是。
若有以下程序则程序的输出结果是( )。
有以下程序:程序的运行结果是。
请在下面程序的横线处填上适当字句,以使程序完整,并使程
程序阅读题1、2、#include<iostream>
以下程序的输出结果是。
关于定义函数,说法正确是( )。
已知函数定义def func(*p):return s
已知列表x中包含超过5个以上的元素,那么表达式x=x[
表达式type(3+4j)in(int,float,c
在C语言源程序中,一个变量代表____________
以下程序运行结果是____________。
能够减少相同数据重复存储的是
已知,计算f(n)的C语言函数f1如下:将f1中的in
试编写一个SHELL程序,该程序能接收用户从键盘输入的
Linux为用户提供的接口有____ 、____、__
如果关系R和S进行自然连接时,再把左边关系R中原该舍弃
(第k小路径)给定一张.个点.条边的有向无环图,顶点编
(15 分)已知无向连通图 G 由顶点集 V 和边集
现有 5 个操作 A、B、C、D和E操作 C必须在 A
功能:不用递归方式,编写函数fun,求任一整数m的n次
可能存在输入不同,但输出的第二行相同的情形。
(最优子序列)取 m = 16,给出长度为 n 的整数
输入: CBBADADA输出: ______
(连续邮资问题)某国发行了 n 种不同面值的邮票,并规
在下面各软件中,不属于NOIP竞赛(复赛)推荐使用的语
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2