zoukankan      html  css  js  c++  java
  • I00023 鸡兔同笼解法二

    穷举法是程序员常用的手法,参见《鸡兔同笼》。


    鸡兔同笼问题是《孙子算经》卷下中的第31题。今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?答曰:雉二十三。兔一十二。

    一天,老师布置家庭作业,做鸡兔同笼问题。小明不喜欢做复杂计算,回家后开始训练鸡和兔。小明吹一声哨,鸡和兔都抬起一条腿,小明又吹一声哨,鸡和兔又再抬起一条腿,鸡就一屁股坐地下了,兔两腿站立。于是,小明明白了应该怎么算这个题。兔的数量=(脚数-头数-头数)/2,鸡的数量=头数-兔的数量。

    程序员要解决实际问题,需要面对三个世界,一是现实世界,二是数学世界,三是数据世界。现实世界中的问题可以先放到数学世界中解决,最后再进入数据世界并且编写程序解决。

    这里给出的程序,可以输入多组头和脚的数量。根据输入的头和脚的数量,计算出鸡和兔的数量。

    程序如下:

    /* 鸡兔同笼,今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何? */
    
    #include <stdio.h>
    
    int main(void)
    {
        int head, feet, rabbit;
    
        printf("Please enter the number of feet and head:
    ");
        while(scanf("%d%d", &head, &feet) != EOF) {
            if(head <= 0 || feet <= 0 || head * 2 > feet
                    || head *  4 < feet
                    || (feet - 2 * head) % 2 != 0)
                printf("Input error!
    ");
            else {
                rabbit = (feet - 2 * head) / 2;
                printf("chicken=%d, rabbit=%d
    ", head - rabbit, rabbit);
            }
        }
    
        return 0;
    }

    程序运行例子:

    Please enter the number of feet and head:
    35 94
    chicken=23, rabbit=12
    15 40
    chicken=10, rabbit=5
    10 41
    Input error!
    10 18
    Input error!
    10 20
    chicken=10, rabbit=0


  • 相关阅读:
    RMAN动态视图
    无归档模式下的备份
    验证备份集-使用DBVERIFY工具
    手工备份控制文件和参数文件
    针对发起alter tablespace test begin backup 断电情况的处理
    Jenkins一次任务构建中如何处理多个git仓库
    Element-ui Tree组件实现单选
    前端覆盖式发布引发的使用体验提升
    客户端localStorage命名冲突问题
    git 查看和删除分支
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564768.html
Copyright © 2011-2022 走看看