Day 3:枚举算法(暴力破解)
枚举算法(Brute Force)是一种 暴力搜索 方法,它通过 遍历所有可能的情况 来找到正确答案。虽然它的 时间复杂度较高,但在 数据范围较小 时,它是一种简单且有效的解法。
本日的学习目标:
- 掌握 暴力枚举 的方法
- 优化枚举范围,提高效率
- 练习 水仙花数、百钱买百鸡 等经典问题
�� 一、什么是枚举算法?
枚举算法(Brute Force)即 穷举所有可能的情况,然后筛选出符合条件的解。
�� 适用场景
- 数据规模较小(n ≤ 10^4)
- 无更优算法
- 暴力法可以解决问题
�� 二、枚举基本模板
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (满足条件) {
处理当前解;
}
}
}
�� 如何优化枚举?
- 缩小遍历范围,减少无效计算
- 提前终止循环,避免不必要的计算
- 利用数学特性,减少不必要的枚举
�� 三、经典练习题
�� 练习 1:水仙花数
�� 题目描述
- 一个 3 位数,如果 每个数字的立方和等于它本身,就称它为 水仙花数。
- 例如:153 = 1^3 + 5^3 + 3^3,所以 153 是水仙花数。
- 求出所有 100~999 之间的水仙花数。
�� 解法分析
- 100 ≤ num ≤ 999
- 分解成 百位、十位、个位 后 求立方和
- 检查是否等于 num 本身
✅ 代码实现
public class NarcissisticNumber {
public static void main(String[] args) {
for (int num = 100; num <= 999; num++) {
int a = num / 100; // 百位
int b =