衡水市网站建设_网站建设公司_模板建站_seo优化
2026/1/19 16:56:39 网站建设 项目流程

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


编程题

B3958 相似字符串

【题目来源】

洛谷:B3958 [GESP202403 四级] 相似字符串 - 洛谷

【题目描述】

对于两个字符串A AAB BB,如果A AA可以通过删除一个字符,或插入一个字符,或修改一个字符变成B BB,那么我们说A AAB BB是相似的。

比如 apple 可以通过插入一个字符变成 applee ,可以通过删除一个字符变成 appe ,也可以通过修改一个字符 变成 bpple ,因此 apple 和 applee 、 appe 、 bpple 都是相似的。但 applee 并不能通过任意一个操作变成 bpple ,因此它们并不相似。

特别地,完全相同的两个字符串也是相似的。

给定T TTA , B A,BA,B,请你分别判断他们是否相似。

【输入】

第一行一个正整数T TT

接下来T TT行,每行两个用空格隔开的字符串A AAB BB

保证T ≤ 100 T\le 100T100A , B A,BA,B的长度不超过50 5050。保证A AAB BB只包含小写字母。

【输出】

输出T TT行,对于每组A , B A,BA,B,如果它们相似,则输出similar,否则输出not similar

【输入样例】

5 apple applee apple appe apple bpple applee bpple apple apple

【输出样例】

similar similar similar not similar similar

【算法标签】

《洛谷 B3958 相似字符串》 #字符串(入门)# #GESP# #2024#

【代码详解】

#include<bits/stdc++.h>// 包含所有标准库头文件usingnamespacestd;// 使用标准命名空间// 判断两个字符串是否相似boolisSimilar(string A,string B){intm=A.size(),n=B.size();// 长度差超过1直接返回不相似if(abs(m-n)>1)returnfalse;// 情况1:长度相等(可能只需要修改一个字符)if(m==n){intdiff=0;// 记录不同字符的数量for(inti=0;i<m;i++){if(A[i]!=B[i]){diff++;if(diff>1)returnfalse;// 超过1处不同}}returntrue;// 0或1处不同}// 情况2:长度差1(可能需要插入/删除一个字符)else{string&shorter=(m<n)?A:B;// 较短的字符串string&longer=(m<n)?B:A;// 较长的字符串inti=0,j=0;// 双指针intdiff=0;// 差异计数器while(i<shorter.size()&&j<longer.size()){if(shorter[i]!=longer[j]){diff++;if(diff>1)returnfalse;// 超过1处差异++j;// 只移动较长字符串的指针(模拟插入/删除)}else{++i;++j;}}returntrue;// 最多1处差异}}intmain(){intT;// 测试用例数量cin>>T;while(T--){string A,B;cin>>A>>B;// 输入两个字符串if(isSimilar(A,B)){cout<<"similar"<<endl;}else{cout<<"not similar"<<endl;}}return0;}

【运行结果】

5 apple applee similar apple appe similar apple bpple similar applee bpple not similar apple apple similar

B3959 做题

【题目来源】

洛谷:B3959 [GESP202403 四级] 做题 - 洛谷

【题目描述】

小杨同学为了提高自己的实力制定了做题计划,在第 天时,他必须要完成 道题,否则他就会偷懒。

小杨同学现在找到了一个题库,一共有n nn套题单,每一套题单中有一定数量的题目。但是他十分挑剔,每套题单他只会使用一次,每一天也只能使用一套题单里的题目,之后那套题单就会被弃之不用。对于每套题单,他不必完成 题单内所有的题。

那么问题来了,小杨同学最多会做题几天才偷懒呢?

【输入】

第一行,1 11个数为n nn,表示有多少套题单。

第二行,n nn个整数a 1 , a 2 , … , a n a_1,a_2,\dots, a_na1,a2,,an,分别表示每套题单有多少道题。

【输出】

输出一行,小杨同学偷懒前最多做题天数。

【输入样例】

4 3 1 4 1

【输出样例】

3

【算法标签】

《洛谷 B3959 做题》 #贪心# #排序# #GESP# #2024#

【代码详解】

#include<bits/stdc++.h>// 包含所有标准库头文件usingnamespacestd;longlonga[1000005];// 定义全局数组存储数据intmain(){intn;cin>>n;// 输入数据数量// 读取n个数据for(inti=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);// 对数组进行升序排序intstart=1;// 搜索起始位置intans=0;// 最终答案// 计算最大满足天数for(inti=1;i<=n;i++){// i表示当前检查的天数for(intj=start;j<=n;j++){// 从start开始查找if(i<=a[j]){// 找到第一个满足a[j]≥i的位置ans=i;// 更新最大天数start=j+1;// 下次从下一个位置开始查找break;// 跳出内层循环}}}cout<<ans;// 输出结果return0;}

【运行结果】

4 3 1 4 1 3

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询