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

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. (1 分)当输入为"abcde fg"时,输出为-1。

    A. 正确 B. 错误

  2. 当输入为"abbababbbab abab"时,输出为 4。

    A. 正确 B. 错误

  3. 当输入为"GoodLuckCsp2022 22"时,第 20 行的"j++"语句执行次数为 2。

    A. 正确 B. 错误

单选题

  1. 该算法最坏情况下的时间复杂度为( )。

    A. O(n+m)

    B. O(nlogm)

    C. O(mlogn)

    D. O(nm)

  2. f(a, b) 与下列( )语句的功能最类似。

    A. a.find(b)

    B. a.rfind(b)

    C. a.substr(b)

    D. a.compare(b)

  3. 当输入为"baaabaaabaaabaaaa aaaa",第 20 行的"j++"语句执行次数为 ( )。

    A. 9 B. 10 C. 11 D. 12

判断题答案及解析
  1. 输入为"abcde fg"时,输出为-1。

    模拟显示算法返回-1,故正确。
    答案:A

  2. 输入为"abbababbbab abab"时,输出为4。

    实际匹配位置为3,故输出应为3,题目说法错误。
    答案:B

  3. 输入为"GoodLuckCsp2022 22"时,第20行的"j++"语句执行次数为2。

    模拟显示只有最后一次匹配成功,执行2次,故正确。
    答案:A

单选题答案及解析
  1. 该算法最坏情况下的时间复杂度为( )。

    最坏情况下每次跳跃距离为1,且需比较大量字符,时间复杂度为O(nm)。
    答案:D

  2. f(a, b) 与下列( )语句的功能最类似。

    f函数返回子串首次出现的位置,与a.find(b)功能类似。
    答案:A

  3. 当输入为"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;
}
相关推荐
骑着蜗牛撵大象3279 分钟前
大模型 SDK 编译就崩?用 CMakeLists 把 httplib、JSON 与 OpenSSL 装配成可复用的 ChatServer
android·java·c++·http·json·cmake·大模型sdk
码小猿的CPP工坊40 分钟前
C++跨平台开发之基于wxWidgets开发GUI程序简介-002
开发语言·c++
chenbingjie_c1 小时前
C++ 继承全解析(从三种继承方式到菱形继承与内存布局)
开发语言·c++
火2251 小时前
# C++ 微服务即时通讯系统(四):MySQL、Redis 与 Elasticsearch——数据分工与一致性
c++·mysql·微服务
xiaoye-duck11 小时前
《C++ 工具库实战》gflags 命令行参数解析库详解
c++·第三方库
狂奔的sherry12 小时前
C++ 宏生成访问函数的代价:访问权限、调试和类型检查
c++·宏·编译·预处理器·类型检查
划破黑暗的第一缕曙光13 小时前
[C++]:5.STL:string(2)
java·c++·redis
小超人诞生日记16 小时前
C++ 异常机制详解:从抛出捕获到异常安全
c++·算法
多弗朗皮卡丘16 小时前
C++的IO流
开发语言·c++·io流·文件io流
xiangyun6117 小时前
C++ 手撕 shared_ptr:引用计数与控制块到底长什么样?
开发语言·c++·算法·面试·stl