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;
}