通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"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]的子序列。
6)若 tlen = 10, 输出为 2,则 slen 最小为
0
10
12
1
所属试卷:CSP-S1提高级初赛试卷[2019]
有如下程序(函数调用、数值计算相关),运行后的输出结果
以下代码的输出结果是( )。
逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是
下面属于黑盒测试方法的是( )。
以下函数的功能是:计算a的n次方作为函数值返回。为实现
下列给定程序的功能是调用fun函数建立班级通信录。通信
有以下程序程序运行后的输出结果是。
设变量p是指针变量,语句p=NULL;是给指针变量赋N
已知x=[[]]*3,那么执行语句x[0].appen
表达式{1,2,3}<{1,2,4}的值为______
可以使用内置函数__________查看包含当前作用域
对于带有else子句的for循环和while循环,当循
已知x={1,2,3},那么执行语句x.add(3)之
Python内置函数___________用来返回数值
有以下程序 在VC6平台上编译运营,程序运营后的输出
现有队列Q与栈S,初始时Q中的元素依次是 1, 2,
vi编辑器有哪几种工作模式?如何在这几种工作模式之间转
下面给出了一个SHELL程序,试对其行后有#(n)形式
Linux操作系统在登录时,输入密码,系统以*显示密码
假设输入的所有数都为不超过1000的正整数,完成下面的
(15 分)已知无向连通图 G 由顶点集 V 和边集
(15 分)假定计算机 M 字长为 16 位,按字节编
当a=3,b=2,c=1时,执行以下程序段后a=___
设x=2.5,a=7,y=4.7,算术表达式x+a%3
在C程序中,只能给指针变量,NULL值和_____值。
C语言表达式!(4>=6)&&(3<=7)的值是___
在程序运行过程中,如果递归调用的层数过多,可能会由于
(矩阵变换)有一个奇幻的矩阵,在不停的变幻,其变幻方式
周末小明和爸爸妈妈三个人一起想动手做三道菜。小明负责洗
设栈 S的初始状态为空,元素 a,b,c,d,e 依次
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2