zoukankan      html  css  js  c++  java
  • I00013 鸡兔同笼

    这是《孙子算经》卷下中的第31题。

    今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?答曰:雉二十三。兔一十二。

    初学者通常用穷举法来解这种问题,即把所有可能都试一遍,找出满足条件的解。

    即便是使用穷举法,也需要把程序编得具有一定的通用性,比如说头或脚的数量变了程序也应该能够不用修改也能计算。另外循环控制方面也应该尽可能的少。

    程序中,变量i假定为鸡的数量,变量j假定为兔子的数量。那么,i+j为头数,2i+4j为脚数。这个程序是经典的穷举法+试探法的过程,并非是唯一的解法。


    程序如下:

    /* 鸡兔同笼,今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何? */
    
    #include <stdio.h>
    
    #define MIN(x, y) (((x)>(y))?(y):(x))
    
    #define HEADS 35
    #define FOOT  94
    
    int main(void)
    {
        int i, j;
        for(i=0; i<=MIN(HEADS, FOOT/2); i++)
            for(j=0; j<=MIN(HEADS, FOOT/4); j++)
                if(i+j==HEADS && i*2+j*4 == FOOT)
                    printf("chicken=%d, rabbit=%d
    ", i, j);
    
        return 0;
    }
    程序运行结果如下:

    chicken=23, rabbit=12


  • 相关阅读:
    nioSocket
    Socket
    常见协议和标准
    Object类clone方法
    java中的运算符
    java中方法的定义
    Spring中实现定时调度
    Spring中对资源的读取支持
    HashMap的实现原理
    固定Realm 与配置数据库连接实现登录验证
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564861.html
Copyright © 2011-2022 走看看