多层循环模板
嵌套循环的原理与经典题型:乘法表、图案打印、枚举
多层循环
嵌套循环
图案
枚举
GESP2
#include <bits/stdc++.h>
using namespace std;
int main() {
// 九九乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++)
cout << j << "×" << i << "=" << i*j << "\t";
cout << endl;
}
// 打印直角三角形
int n = 5;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) cout << "*";
cout << endl;
}
// 打印等腰三角形
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) cout << " ";
for (int j = 1; j <= 2 * i - 1; j++) cout << "*";
cout << endl;
}
// 枚举:百钱买百鸡
// 公鸡5元 母鸡3元 小鸡1元3只
for (int x = 0; x <= 20; x++) // 公鸡
for (int y = 0; y <= 33; y++) // 母鸡
for (int z = 0; z <= 100; z += 3) { // 小鸡3的倍数
if (x + y + z == 100 && 5*x + 3*y + z/3 == 100)
cout << x << " " << y << " " << z << endl;
}
return 0;
}
📖 要点说明
- 外层循环走一次,内层走一轮——嵌套循环次数是各层相乘
- 图案打印找规律:行数、空格数、星号数与行号的关系
- 枚举法:确定范围后穷举所有可能,过滤满足条件的
⚠️ 常见错误
- 嵌套循环内外层用同一变量名
- 图案打印时空格和星号数量公式算错
- 枚举范围过大导致超时,需优化缩小范围