2022年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第1题)

第1题
cpp
1 #include <iostream>
2 #include <string>
3 #include <vector>
4
5 using namespace std;
6
7 int f(const string &s, const string &t)
8 {
9 int n = s.length(), m = t.length();
10
11 vector<int> shift(128, m + 1);
12
13 int i, j;
14
15 for (j = 0; j < m; j++)
16 shift[t[j]] = m - j;
17
18 for (i =0; i<= n - m; i += shift[s[i + m]]){
19 j =0;
20 while(j < m && s[i +j] == t[j]) j++;
21 if (j == m) return i;
22 }
23
24 return -1;
25 }
26
27 int main()
28 {
29 string a ,b;
30 cin >> a >> b;
31 cout << f(a, b) << endl;
32 return 0;
33 }
假设输入字符串由 ASCII 可见字符组成,完成下面的判断题和单选题:
判断题
-
(1 分)当输入为"abcde fg"时,输出为-1。
A. 正确 B. 错误
-
当输入为"abbababbbab abab"时,输出为 4。
A. 正确 B. 错误
-
当输入为"GoodLuckCsp2022 22"时,第 20 行的"j++"语句执行次数为 2。
A. 正确 B. 错误
单选题
-
该算法最坏情况下的时间复杂度为( )。
A. O(n+m)
B. O(nlogm)
C. O(mlogn)
D. O(nm)
-
f(a, b) 与下列( )语句的功能最类似。
A. a.find(b)
B. a.rfind(b)
C. a.substr(b)
D. a.compare(b)
-
当输入为"baaabaaabaaabaaaa aaaa",第 20 行的"j++"语句执行次数为 ( )。
A. 9 B. 10 C. 11 D. 12
判断题答案及解析
-
输入为"abcde fg"时,输出为-1。
模拟显示算法返回-1,故正确。
答案:A -
输入为"abbababbbab abab"时,输出为4。
实际匹配位置为3,故输出应为3,题目说法错误。
答案:B -
输入为"GoodLuckCsp2022 22"时,第20行的"j++"语句执行次数为2。
模拟显示只有最后一次匹配成功,执行2次,故正确。
答案:A
单选题答案及解析
-
该算法最坏情况下的时间复杂度为( )。
最坏情况下每次跳跃距离为1,且需比较大量字符,时间复杂度为O(nm)。
答案:D -
f(a, b) 与下列( )语句的功能最类似。
f函数返回子串首次出现的位置,与a.find(b)功能类似。
答案:A -
当输入为"baaabaaabaaabaaaa aaaa",第20行的"j++"语句执行次数为( )。
模拟得到各次匹配中j++执行次数分别为3、2、1、0、4,总和为10。
答案:B
专栏推荐:信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新)
https://blog.csdn.net/weixin_66461496/category_13125089.html
各种学习资料,助力大家一站式学习和提升!!!
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"########## 一站式掌握信奥赛知识! ##########";
cout<<"############# 冲刺信奥赛拿奖! #############";
cout<<"###### 课程购买后永久学习,不受限制! ######";
return 0;
}
1、csp信奥赛高频考点知识详解及案例实践:
CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转
CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转
信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html
2、csp信奥赛冲刺一等奖有效刷题题解:
CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转
CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转
信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新)
https://blog.csdn.net/weixin_66461496/category_13125089.html
3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html
4、CSP信奥赛C++竞赛拿奖视频课:
https://edu.csdn.net/course/detail/40437 点击跳转

· 文末祝福 ·
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"跟着王老师一起学习信奥赛C++";
cout<<" 成就更好的自己! ";
cout<<" csp信奥赛一等奖属于你! ";
return 0;
}