算法思想

https://www.sohu.com/a/283968230_100028126

常用的算法:枚举、递推、递归、分治、贪心、试探法、动态迭代和模拟等

##

1. 枚举 (暴力算法)

将问题的所有答案一一列举,根据判断条件进行选取,通常使用循环实现。

经典运用:百钱买百鸡

题目:公鸡5元一只,母鸡3元一只,小鸡3只一元,用100元买100只鸡,需要3种鸡都买到。问三种鸡各买多少

解题一:

1.x+y+z = 100
2.5x+3y+3/z = 100
3.得:5x<100; 3Y<100; z=100-x-y;

程序:

//公鸡上限
for (int x = 1; x < 20; x++)
 {
     //母鸡的上限
     for (int y = 1; y < 33; y++)
    {
        //剩余小鸡
        var z = 100 - x - y;
        if ((z % 3 == 0) && (x * 5 + y * 3 + z / 3 == 100))
        {
            log.info("公鸡:{}只,母鸡:{}只,小鸡:{}只", x, y, z);
        }
    }
}

解题二:

1.x+y+z = 100
2.5x+3y+3/z = 100
3.由2.乘3得:15x+9y+z = 300
4.由3.-2.得:y=25-(7/4)x
5.令 x = 4k
6.把5.带入4.得:y = 25-7k
7.把5.6.带入1.得:z = 75+3k
8.因为0<x,y,z<100得:z的取值为1,2,3

程序:

int x,y,z;
for(int k = 1; k <=3; k++) {
    x = 4k;
    y = 25-7k;
    z = 75+3k;
}

2. 递推

3. 递归

4. 分治

5. 贪心

6. 试探法

7. 动态迭代

8. 模拟