枚举&模拟

这东西真的需要写吗


枚举

简介

顾名思义就是枚举所有可能性的暴力算法
枚举的思想是不断地猜测,从可能的集合中一一尝试,然后再判断题目的条件是否成立。

要点

有啥要点,直接暴力就完事了

枚举的时候要想清楚:可能的情况是什么?要枚举哪些要素?
然后通过循环将这些情况遍历一遍

但是这样的大部分情况下枚举的复杂度为O(N), O(N)^2^, O(NM)
显然是过不了题目的要求的你有超算当我没说
所以要尽量剪枝

想清楚枚举的时候有哪些部分是不用枚举的,有哪些是要枚举的
然后通过判断语句在循环内减少开销


模拟

搓完一道模拟题是很爽的,但是修bug的过程是很痛苦的

简介

这类型题目将围绕一种场景,对其进行数学建模,然后通过计算机运算求解
模拟题目通常具有码量大、操作多、思路繁复的特点。所以在编程时需谨慎小心,尽量避免回头修bug

要点

对于这类题型,我们有以下建议:

  • 在动手写代码之前,在草纸上尽可能地写好要实现的流程。
  • 在代码中,尽量把每个部分模块化,写成函数、结构体或类。
  • 对于一些可能重复用到的概念,可以统一转化,方便处理:如,某题给你 “YY-MM-DD 时:分” 把它抽取到一个函数,处理成秒,会减少概念混淆。
  • 调试时分块调试。模块化的好处就是可以方便的单独调某一部分。
  • 写代码的时候一定要思路清晰,不要想到什么写什么,要按照落在纸上的步骤写。

如果你认为自己已经可以战胜这类题目了
欢迎来尝试『猪国杀』