算法——1. 算法思想

1. 穷举思想

基本思想:在所有可能的情况中,搜索正确的答案。
方式:循环、条件判断
适用:没有明显规律可循的场景
举例:鸡兔同笼

鸡兔同笼问题:
今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各几何?

public class Main {
    public static void main(String[] args) {
        int chickedCount = 0;
        int rabbitCount = 0;
        for (int i = 1; i <= 35; i++) {
            int j = 35 - i;
            int footCount = 2 * i + 4 * j;
            if (footCount == 94) {
                chickedCount = i;
                rabbitCount = j;
                break;
            }
        }
        System.out.println("鸡有:" + chickedCount);
        System.out.println("兔有:" + rabbitCount);
    }
}

2. 递推思想

基本思想:根据问题导出明确的计算公式
适用:有明显公式规律的场合
举例:兔子产仔问题

兔子产仔问题:
如果一对两个月大的兔子以后每一个月都可以生一对小兔子,一对新生的兔子出生两个月后才可以生小兔子。假定一年内没有兔子死亡事件,那么一年后共有多少对兔子?
兔子产仔

public class Main {
    public static void main(String[] args) {
        int a12 = countFn(12);
        System.out.println(a12);
    }

    private static int countFn(int n) {
        if (n == 1 || n == 2) {
            return 1;
        }
        return countFn(n - 1) + countFn(n - 2);
    }
}

3. 分治思想

基本思想:待求解问题化简为若干个小规模相同问题,通过逐步划分,达到一个易于求解阶段而直接求解。
举例:寻找假币问题

寻找假币问题:
一个袋子里有 30 个硬币,其中一枚是假币,并且假币和真币一样,肉眼很难分辨,目前只知道假币比真币重量轻一点,请问如何区分出假币?

思想:暴力算法、分治算法(分而治之、递归思想)、动态规划、贪心、回溯法、分治界限法
技术:递归、迭代

比较笨的枚举算法思想

聪明一点的递推算法思想

充分利用自己的递归算法思想

各个击破的分治算法思想

贪心算法思想并不贪婪

试探法算法思想是一种委婉的做法

迭代算法

模拟算法思想

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值