一、引言:
模拟算法,简单来说,就是按照题目描述的步骤或规则,一步一步地用代码实现解决问题的过程。就像是你在玩一个游戏,游戏有它自己的规则,而你需要根据这些规则来做出相应的动作以完成特定的目标。
二、模拟算法的特点与技巧:
特点:
- 代码量大(做好准备( •̀ ω •́ )✧迎接挑战)
- 操作多
- 思路复杂
- 较为复杂的题,出错后难定位错误
技巧:
- 动手前,尽量在电脑或演草纸列好思路
- 代码中,尽量对代码模块化,写成函数,类(Java)/结构体(C++)
- 对于一些会重复用到的概念,可以统一转化,方便处理
- 调试代码时,可分块调试(对代码模块化的好处)
- 写代码一定要思路清晰,不要想到啥写啥,按自己提前列好的思路书写
蓝桥常考题型:
基础模拟(字符串处理、日期处理),状态模拟,过程模拟等... 其中以基础模拟最常见。
笔者提醒:
模拟这个算法其实非常难,主要是逻辑上的麻烦,但正常刷题时我们都不把模拟的逻辑思维理清就直接做,如果这题没有太水的话,是非常容易错的。
模拟可以与任何算法同时出现,比如模拟与动归dp、模拟与搜索之类的。
而接下来的入门题型,就是“水题”!基础与进阶代码量会大一些。但这没啥好担心的,这毕竟是算法能力提升的基石-敲代码能力( ̄︶ ̄)↗ 。
三、练习:
模拟类型、是以编程题考察。
提示( •̀ ω •́ )✧:
至少要独立思考10min,若20min后仍无思路在看解析,收获会更大!
入门
1、单身贵族游戏(解析)
2、简简单单的暴力题 (解析)
3、小浩的国际象棋(解析)
4、缩位求和(蓝桥真题)(解析)
5、Goshopping(解析)
基础
6、交换瓶子(蓝桥真题)(解析)
7、奇怪的数列(蓝桥真题)(解析)
8、长草(蓝桥真题)(解析)
基础-日期系列
9、跑步(蓝桥真题)
10、跑步计划(蓝桥真题)
11、定时任务(蓝桥真题)
进阶
12、赢球票 (蓝桥真题)
13、神奇闹钟(蓝桥真题)
【最后一题】拉马车 (蓝桥真题)
入门:
1、单身贵族游戏
问题描述
单身贵族游戏规则:游戏玩法似跳棋,但不能走步,只能跳;棋子只能跳过相邻的棋子(相邻位置上一定要有棋子)到空位上,并且把被跳过的棋子吃掉;棋子可以沿格线横、纵方向跳,但是不能斜跳。
在本题中,给定单身贵族游戏走若干步后的棋盘状态(不用判断是否合理),判断游戏是否已经结束了(即不能再走下去了)。
以下图(a)为单身贵族游戏的棋盘,图(b)演示了走棋的规则,图(c)所示的棋盘状态已经结束了,无法再走棋。