算法笔记—05:蓝桥杯刷题笔记

       去年参加了第九届蓝桥杯比赛,十个题做出来五个,对错不知,反正水了个省二,感觉自己做的不是很好。所以今年又参加了第十届,想拿个省一,再去国赛体验一下。在这之前,准备的有半个月的时间,每天就是刷历届的赛题,明天就要比赛了,就想着在这总结一下。

省赛赛题题型:3~4道结果填空、2道代码填空、4道代码编写。

对于菜菜的我来说,蓝桥杯赛题的主要题型只有搜索,不过这个搜索不是一般的搜索,它同时还可能结合排列、组合、递归、回溯、路径搜索(广搜、深搜)算法等等,最多也就这几种。没有什么是for循环暴力枚举解决不了的,不过这是最基本的做法,效率很低,很容易超时,所以很不提倡,如果有其他方法尽量避开嵌套for循环。

然后就是在搜索的过程中,筛选符合条件的数、累加求和、取位数、比大小、交换位置等等。

重点掌握:全排列、组合、递归、回溯、for循环(边循环、边筛选)、二维数组(矩阵法)、字符串操作、还有一些基本数学概念及算法实现等等。


我常用的解题步骤:

  1. 输入、输出的 数据类型 及 存储方式,变量初始化。
  2. 采用算法解决问题(对数据的操作),这块首先想大体怎么解决(for循环、回溯),再考虑其中的一些细节怎么实现,逐渐细化、用各种条件进行筛选。
  3. 检查代码是否符合题目条件要求,最后输入验证。

哈哈哈,这个步骤好像没啥卵用,主要就是 第二步 的实现,得根据经验来算法匹配。就只能这样说。。。


递归与回溯的区别:

递归:是指在定义自身的同时又出现了对自身的调用

回溯:实际上是一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。(简言之,就是在包含问题所有解的解空间中,按照深度优先的策略,从根结点出发搜索解空间)


       *****************************************  结束喽!* _ *   ************************************************

你可能感兴趣的:(算法训练)