算法与数据结构之枚举算法

1.枚举算法的核心思想:

将所有问题的可能性一一列举。

2.枚举算法的应用:

《百钱找百鸡》

问题:
公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡

    问公鸡,母鸡,小鸡各多少?

3.解决问题的核心思想:

以3种鸡的个数为枚举对象(gj,mj,xj)

4.枚举条件:
gj+mj+xj=100;[个数之和]

gj5+mj3+xj/3=100;[用钱之和]

xj%3==0;[小鸡个数一定可以取余3,因为xj个数和购买花的钱必须为整数]

5.代码实现:

int main()
{
    //过程:分别枚举公鸡,母鸡的个数范围满足条件进行输出。
    int x, y, z;//分别表示公鸡,母鸡和小鸡的个数
    for (x = 0; x <= 20; x++)//公鸡个数范围:0-20只,用100元除以每只公鸡的钱
    {
        for (y = 0; y <= 33; y++)//母鸡个数范围:0-33只,用100元除以每只母鸡的钱
        {
            z = 100 - x - y;//z表示小鸡的个数
            if (z % 3 == 0 && x * 5 + y * 3 + z / 3 == 100)
                printf("公鸡:%d,母鸡:%d,小鸡:%d\n", x, y, z);
        }
    }
    getch();
    return 0;
}

6.代码实现效果图:
算法与数据结构之枚举算法_第1张图片

你可能感兴趣的:(算法与数据结构之枚举算法)