通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"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]
有如下头文件(静态成员函数、this指针相关),在所述
已知基类Employee的构造函数定义,Manager
如果有以下定义及初始化:int a=3,*p=&a;,
(读者自行创建,注意每行第一个逗号后面有空格),其内容
公司中有多个部门和多名职员,每个职员只能属于一个部门,
有以下程序:程序运行的结果是( )。
有以下程序:注意:字母a的ASCII码值为97,程序运
以下选项中正确的定义语句是。
按下列要求编程,实现类的定义,并在主函数中测试这个类。
程序填空:
在Python中定义类时,与运算符“//”对应的特殊方
已知 vec =[[1,2],[3,4]],则表达式
表达式int('123',8)的值为_________
以下叙述不正确的是
以下程序运行结果是___________。
有数学表达式:,其C语言表达式为___________
设C语言程序my.cA. 生成目标文件my.o的命令是
通过将______动态链入块设备控制结构blk_dev
在创建Linux分区时,一定要创建( )两个分区
在数据库的E-R图中,菱形框表达的是实体集之间的
MySQL客户端程序 _____ 可用于从mysqld
可以将一个或多个数据库备份到一个文件中的命令是
线性表是具有n个的有限序列(n>0)。
(7 分)下表给出了整型信号量 S 的 wait和
若主机甲与主机乙建立TCP连接时,发送的SYN段中的序
请编写函数void fun(int *dp,int n
若在定义语句:int a,b,c,*p=&c;接着执行
以下不能将s所指字符串正确复制到t所指存储空间的是
若有定义int a = 7, float x = 2.
输入 1:4 3输出 1:____输入 2:2017
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2