摘要: 这是最简单的一种算法, 其依赖于计算机的强大计算能力, 来穷尽每一种可能的情况, 从而达到求解问题的目的, 效率并不高, 但是适合用于一些没有明显规律可循的场合基本思想 就是从所有可能的情况中搜索正确的答案, 步骤如下 对于一种可能的情况, 计算其结果 判断结果是否满足要求, 如果不满足就执行第一步来搜索下一个...
这是最简单的一种算法, 其依赖于计算机的强大计算能力, 来穷尽每一种可能的情况, 从而达到求解问题的目的, 效率并不高, 但是适合用于一些没有明显规律可循的场合
基本思想
就是从所有可能的情况中搜索正确的答案, 步骤如下
对于一种可能的情况, 计算其结果
判断结果是否满足要求, 如果不满足就执行第一步来搜索下一个可能的情况, 如果满足要求, 则表示寻找到一个可能的答案
使用穷举算法时, 需要明确问题的答案范围, 这样才可以在指定范围内搜索答案, 指定范围之后, 就可以使用循环语句和判断条件逐步验证答案的正确性, 从而得到需要的正确答案
其实说这么多, 就是用循环去遍历所有可能出现的结果
鸡兔同笼问题
上有三十五头, 下有九十四足, 问鸡兔几何?
一共有三十五只头, 那么鸡最多有三十五只, 剩下的就是兔的个数, 所以核心的代码是很简单的
- private static void qiongJu(int head, int foot) {
- int rabbitCount = 0;
- for (int i = 0; i <= head; i++) {
- rabbitCount = head - i;
- if (rabbitCount*4 + i*2 == foot){
- System.out.println("兔子:"+rabbitCount+"鸡:"+i);
- }
- }
- }
韩信点兵
韩信知道部队人数大约 1000 人左右, 具体数字不详, 5 人一组剩余 1 人, 7 个人一组还剩两个人, 8 个人一组还剩 3 个人, 问这支部队有多少人?
1000 人左右也就是小于 2000, 所以这个范围就确定了, 然后剩下的就是 if 判断了
- private static void hanxin() {
- for (int i = 0; i < 2000; i++) {
- if (i%5==1 && i%7==2 && i%8==3){
- System.out.println(i);
- }
- }
- }
来源: https://yq.aliyun.com/articles/679046