- 枚举算法的思想
将问题的所有可能性一一列举,然后根据条件判断,保留合适的,舍弃不合适的。 - 枚举算法的基本解题思路
- 确定枚举对象,对象的取值范围,对象的条件。
- 然后逐一枚举对象。
- 枚举算法流程图
- 枚举算法的优化
- 部分不可能的枝叶学会减掉。
- 枚举题目
1.百钱买百鸡
1,问题描述:
公鸡每只5元,母鸡每只3元,三只小鸡1元,用100元买100只鸡,问公鸡、母鸡、小鸡各多少只?
2,算法分析:
利用枚举法解决该问题,以三种鸡的个数为枚举对象,分别设为mj,gj和xj,用三种鸡的总数 (mj+gj+xj=100)和买鸡钱的总数(1/3xj+mj3+gj*5=100)作为判定条件,穷举各种鸡的个数。
using namespace std;
int main()
{
int mj=0, gj=0, xj=0; //定义变量分别表示母鸡、公鸡、小鸡并初始化
for (gj = 0; gj <= 20; gj++) //公鸡最多可买20个
{
for (mj = 0; mj <= 33; mj++) //母鸡最多可买33个
{
xj = 100 - gj - mj; // 三种鸡的总数是100只
if (xj % 3 == 0 && 5 * gj + 3 * mj + xj / 3 == 100) // 总花费为100元。
printf("公鸡为 %d 只,母鸡为 %d 只,小鸡为 %d 只!\n", gj, mj, xj);
}
}
system("pause");
return 0;
}