枚举法
课上练习
知识总结
L2-02.枚举法-知识总结
枚举法-知识总结 核心思想 穷举所有可能写
适用问题 求可行解的问题,包括: 求唯一解 求所有可行解或可行解的个数 求可行解的最值
解题思路 判断所有备选答案是否满足要求: 找到枚举出所有可能性的方式 判断每一个备选答案是否符合要求
️课后作业
☝️总结作业
总结作业非常重要,请务必认真完成✔️
- 枚举法的核心思想是什么?
- 枚举法一般用来求解什么样的问题?
- 枚举法的一般解题思路是什么?
✌️编程作业
考试只有一次提交机会,请务必本地检查正确后再提交❇️
👌编程作业标准答案
请在AC后或者思考15分钟没有进展后查看,不可抄代码❇️
L2025题解+参考代码
L2025题解+参考代码 题目链接 水仙花数:L2025
题解 水仙花数是指一个三位数,其值等于其各个位数上的数字的立方和。也就是说,对于一个三位数ABC,它是水仙花数的条件是: A^3 + B^3 + C^3 = 100×A+10×B+C 为了找到所有的水仙花数,可以枚举所有的三位数,并检查它们是否满足上述条件。
算法步骤 遍历所有三位数:使用一个循环,从100到999枚举所有的三位数。 分解数字:对于每一个三位数,将其分解为百位、十位和个位数字。 检查条件:计算这些数字的立方和,并检查是否等于原来的三位数。 输出结果:如果满足条件,输出该数。
示例代码 这里是使用 C++ 实现的示例代码:
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 // 遍历所有的三位数
6 for (int num = 100; num <= 999; ++num) {
7 // 分解数字
8 int hundreds = num / 100; // 百位
9 int tens = (num / 10) % 10; // 十位
10 int units = num % 10; // 个位
11
12 // 计算立方和
13 int sumOfCubes = hundreds * hundreds * hundreds +tens tens tens +
1units * units * units;
2
3 // 检查是否是水仙花数
4 if (sumOfCubes == num) {
5 // 输出结果
6 cout << num << endl;
7 }
8 }
9
10 return 0;
11}L2026题解+参考代码
L2026题解+参考代码 题目链接 东东去购物:L2026
题解 题目要求我们用 n 元钱买 m 只鸡,并且公鸡、母鸡和小鸡的价格分别为 5 元、3 元和 3 只 1 元。我们需要找到所有符合条件的公鸡、母鸡和小鸡的组合,使得总金额等于 n 元且总只数等于 m 只。
算法步骤 遍历公鸡的数量:使用一个循环遍历可能的公鸡数量,从 0 到 n/5。 遍历母鸡的数量:在每个公鸡数量下,使用一个循环遍历可能的母鸡数量,从 0 到 n/3。 计算小鸡的数量:根据当前的公鸡和母鸡数量,计算小鸡的数量。小鸡的数量等于总只数减去公鸡和母鸡的数量。 检查条件:确保小鸡的数量大于等于 0,并且小鸡的数量是 3 的倍数。计算总金额,并检查是否等于 n 元。如果条件满足,则记录当前组合。 输出结果:输出所有满足条件的组合。
示例代码 这里是使用 C++ 实现的示例代码:
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 int n, m;
6 cin >> n >> m;
7
8 // 遍历公鸡的数量
9 for (int x = 0; x <= n / 5; ++x) {
10 // 遍历母鸡的数量
11 for (int y = 0; y <= n / 3; ++y) {
12 // 计算小鸡的数量
13 int z = m - x - y;
14
15 // 检查条件
16 if (z >= 0 && z % 3 == 0 && (5 * x + 3 * y + z / 3) == n) {
17 cout << x << " " << y << " " << z << endl;
18 }
19 }
20 }
21 return 0;
22}