小明出差回来,发现行李箱的三位密码锁忘了密码。他只记得密码是三个数字(0~9),但具体是哪三个完全不记得了。
怎么办?他决定从 000 试到 999,一个一个试过去。
这就是"枚举法"——逐一尝试所有可能!
幸运的是,当他试到 3-7-2 时,锁"咔嗒"一声开了!🎉
但如果密码是 9-9-9,他要试 1000 次才能打开。有没有更快的方法?如果他记得"三个数字之和是 12",就可以只试满足条件的组合,大大减少尝试次数。
缩小枚举范围 = 优化枚举法!
💡 枚举 vs 模拟
枚举法:把问题的所有可能解逐一列举,逐个检验是否满足条件。核心是"穷举+验证"。
模拟法:用程序忠实重现题目描述的实际过程。核心是"翻译题意"。
两者都是最朴素的算法思想,但在 CSP-J 中占比超过 40%!