c++入门枚举类问题

这个周末数学 (lao shi) 布置了一道题目,有三种动物,九头鸟(一种怪鸟,它有九个头,两只脚)、鸡和兔子关在一个笼子里。
数它们的头正好是100个,数它们的脚也正好是100只。
(lao shi)让桐桐编程计算其中九头鸟、鸡和兔子各有多少只?
输入

输出
若干行,前面几行每行输出满足题目条件的一个解,共三个数,分别表示九头鸟、鸡和兔子的数量,先按九头鸟数量升序排列,再按鸡数量升序排列,最后一行输出题目解的总数。

这个不就是鸡兔同笼的变种么

#include <iostream>
using namespace std;

int main()
{
    int cnt = 0;
    for (int nine = 0; nine <= 100 / 9; nine++)
    {
        for (int ch = 0; ch <= 100 - nine * 9; ch++)
        {
             int rab = 100 - nine * 9 - ch;
             if (nine * 2 + ch * 2 + rab * 4 == 100 && rab >= 0)
            {
                cnt++;
                cout << nine << ", " << ch << ", " << rab << endl;
            }
        }
    }
    cout << cnt;
    return 0;
}

img

【以下回答由 GPT 生成】

首先我们需要定义一个枚举类来表示动物的种类,这个类可以有三个成员:九头鸟、鸡和兔子。我们可以使用一个整数变量来表示动物的种类,例如1表示九头鸟,2表示鸡,3表示兔子。

接下来,我们可以使用两个嵌套的循环来遍历所有可能的解。第一个循环用来遍历九头鸟的数量,范围从0到100(因为总头数是100),第二个循环用来遍历鸡的数量,范围也是从0到100。

在循环中,我们可以使用以下公式来计算兔子的数量:兔子数量 = 总头数 - 九头鸟数量 - 鸡的数量。然后我们判断是否满足条件:头的总数等于100,脚的总数等于100,并且兔子的数量是一个非负整数。

如果满足条件,我们就可以将当前解输出。最后,我们还需要统计解的总数并输出。

下面是一个使用C++编写的解决这个问题的示例代码:

#include <iostream>

enum Animal {
    NINE_BIRD,
    CHICKEN,
    RABBIT
};

int main() {
    int totalHeads = 100;
    int totalFeet = 100;
    int totalSolutions = 0;

    for (int numNineBird = 0; numNineBird <= totalHeads; numNineBird++) {
        for (int numChicken = 0; numChicken <= totalHeads - numNineBird; numChicken++) {
            int numRabbit = totalHeads - numNineBird - numChicken;

            // check if the total feet is correct
            int totalFeetCheck = numNineBird * 2 + numChicken * 2 + numRabbit * 4;
            if (totalFeetCheck == totalFeet) {
                std::cout << "Solution: " << numNineBird << ", " << numChicken << ", " << numRabbit << std::endl;
                totalSolutions++;
            }
        }
    }

    std::cout << "Total solutions: " << totalSolutions << std::endl;

    return 0;
}

运行这个程序将输出满足条件的每一个解,以及解的总数。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^