蓝桥最后一月冲刺(1/17)

有的同学问我:哥,我假期一点没学,现在还有没有救?

我说:有,我这里有最后一个月的免费冲刺班,17节集锦让你轻松实现最后一个月弯道超车!

我会根据讲解去年蓝桥杯的真题和我之前练习的经典题目,以此来拓展知识点,为大家讲解算法知识,实现小白也能听懂拿分。(本课程针对冲省赛的选手)

一、课前准备:

推荐刷题网站:

        1.蓝桥杯官网题库    题库 - 蓝桥云课 (这两个网址建议收藏,之后讲课用得上)

        2.acwing网站   AcWing

大赛制定编译器: Dev-C++

        具体下载方式可参考   DevC++下载安装和使用_哔哩哔哩_bilibili(具体方法很简单,无脑跟着操作就好,up主讲的很清楚,7.8分钟就能下好)

结合我在b站的课来学习:第一节课_哔哩哔哩_bilibili

二、(正课开始)第一讲:做题方法

1.首先,将做算法题分成四个步骤

        第一步:读懂题意,用人脑的方法将题目模拟做出来(考验思维)

        第二步:将第一步的方式用计算机语言(C/C++/Java/Python)表示写出来 (考验语法基础)

        第三步:用数据结构或算法将之前的方法进行优化  (考验数据结构与算法知识)

        第四步:调试与修改 

        (看看你自己做题的时候总是卡在哪一步?)

2.我们拿蓝桥杯题库里的一道题来举例

压缩字符串录

        第一步,首先要仔细读题,读懂题目才是做题的基础。可知题目就是将段字符压缩成字符和数字的样子,如果我们自己拿笔做会怎么做?(大家先自己看着题目想一想,可以拿笔自己写几串字母,自己做做看)

        大概率就是从前往后看如果没有相连的相同字符就输出NO,如果有就把连续的字符都找出来如果有一样的就合直到遇到不一样的字符,如果只有一个字母就只写字母

        第二步,用翻译成对应的编程语言。(大家自己看看要如何做,字符要用什么数据结构存,数字要怎么存,如何使用,如何输入输出)

        以C/C++为例,分享一下我的做题思路:显然,这道题中的字符串要用string类型或者char[]来存,输出的数字用int型定义。根据第一步的从前往后看要从头开始用for循环开始遍历for循环的终止条件用strlen()或者.lenth()找长度。如果没有相连的相同字符就输出NO。之后把连续的字符都找出来,我们可以一个一个判断前一个字符和后一个字符是否相等,如果相等,就将数字加一,如果不一样就输出字符和数字,如果数字为1就只输出字母。

        第三步,用数据结构和算法进行优化,对于冲省赛队伍的小白来说,完成前两步就已经够了,这一步如果要完成,要投入大量精力来学习,如果有兴趣,本博主推荐acwing上的算法基础课。(纯推荐,不是广子)本题也就不需要来进行优化了,因为字符串长度只有最多只有500,我们的时间复杂度是O(N)(关于时间复杂度和优化我们下一节讲),1s完成绰绰有余。

        第四步,俗称debug,这步纯靠各位同学平时的debug积累了,bug见多了,自然也就会改了。

代码如下:

#include <iostream>
#include <cstring>
using namespace std;

const int N = 510;

int main() {
    char a[N];
    cin >> a;
    bool st = false; //用来判断是否有相同的字符,来看是否输出NO
    int cnt = 1; //用来看有几个相同的字母
    for(int i = 1; i < strlen(a); i ++ ){
		if(a[i] == a[i - 1]) st = true; //如果有相同的字符,将st变为true
	}
	if(st){  //如果st为真,即有相同字符
		for(int i = 1; i <= strlen(a); i ++ ){
			if(a[i] == a[i - 1]) cnt ++ ; //如果前一个和后一个字母一样,cnt++
			else{
				if(cnt == 1) cout << a[i - 1]; //前后字母不一样,且cnt为1,只输出字符
				else{
					cout << a[i - 1] << cnt; //输出字母和数字
					cnt = 1; //还原cnt
				}
			}
		}
	}
	else printf("NO"); //没有相同字符,返回NO
    return 0;
}

Java和Python基本也都是一样的

        如果同学们的语法基础没有很牢固,不太熟练,建议课下将数组和字符串练到可以熟练使用,其他的暂时不做过多要求,如果会的话自然更好。        

        听懂了的同学留一个作业762. 字符串匹配 - AcWing题库

  • 41
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值