文章目录
一、枚举法(暴力搜索)
在循环中,我们经常会结合枚举法的思路去解题,这也是一个很基础的算法。
1. 概念
枚举法就是列举出问题所有可能性答案,然后从中一个一个的筛选出符合要求的内容。
(也叫它暴力搜索,在所有可能性中暴力的去搜索正确答案)
2. 优缺点
枚举法依靠遍历,思路简单,易于理解;但是,枚举法通常运算量比较大,解题效率不高。
3. 示例
求解水仙花数:
求出100~999范围内所有的水仙花数。
水仙花数,即为各位数的立方和等于其本身。以153为例:1 * 1 * 1 + 5 * 5 * 5+ 3 * 3 * 3 = 153
示例输出:
153
370
371
407
解析: 这道题就是一道经典的枚举法求解问题。通过题目分析,可以很明显的知道要想找到100-999之间的所有水仙花数,那么我们答案的可能性就在这100-99之间,故:我们需要做的第一步,就是利用for循环将100-999的数字循环列举出来;第二步,再根据水仙花数的条件进行答案判断。
#include<iostream>
using namespace std;
int main(){
for(int i=100;i<=999;i++){
// 列举所有可能:数字100-999
int a=i%10; // 获取个位数
int b=i/10%10; // 获取十位数
int c=i/100%10; // 获取百位数
if(a*a*a+b*b*b+c*c*c==i){
// 判断是否满足水仙花数条件,满足则输出答案
cout << i;
}
}
}
练习一 鸡兔同笼
题目介绍:
鸡兔同笼是中国古代的数学名题之一:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?