【考点 · 4级】 简单枚举 —— 暴力穷举法,把所有可能的情况逐一尝试,直到找到满足条件的解。属于基础算法策略。
【说人话】 就是"笨办法":把每种可能都试一遍。关键有两点:①确定枚举的范围(从哪到哪);②确定判断条件(什么时候算找到了)。当数据规模小(通常 n ≤ 1000)时,枚举是最简单靠谱的方法。可以搭配 continue 跳过不满足的情况来优化。
continue 的作用是什么?a³ + b³ + c³ == abc,则它是玫瑰花数。#include <iostream>
using namespace std;
int main() {
// 枚举 100~999 的所有三位数
for (int i = 100; i <= 999; i++) {
int a = i / 100; // 百位
int b = (i / 10) % 10; // 十位
int c = i % 10; // 个位
if (a*a*a + b*b*b + c*c*c == i) {
cout << i << " ";
}
}
cout << endl;
return 0;
}
// 输出: 153 370 371 407
/ 和 % 提取各位数字是经典套路;③ 注意边界不要漏掉 100 和 999。
< 而不是 <=,导致少算最后一个数。建议先想清楚"从几到几"再写代码。break 直接跳出整个循环,continue 只跳过当前这一轮。枚举时找"第一个"用 break,找"所有"用 continue。sum、cnt)必须在循环外初始化为 0,否则结果不确定。