正文

[006] 百鸡问题2006-02-15 14:28:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wentao/10067.html

分享到:

    张丘建《算经》中提出“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?分析:公鸡-cocks ,母鸡-hens,小鸡-chicks               cocks+hens+chicks=100            5*cocks+3*hens+chicks/3=100★ 关键:  受百钱买百鸡的约束有 0≤cocks≤19, 0≤hens≤33, 0≤chicks≤100★ 思路:  累试法(枚举法)  依次取cocks值域中的值,然后求其余两数,看是否满足题意算法描述:cocks=0    当cocks≤19时    {          找满足题意的hens,chicks数          cocks加1    }细化:cocks=0    当cocks≤19时    {        hens=0        当hens≤33时        {            找满足题意的chicks数            hens加1        }        cocks加1    }再细化:cocks=0    当cocks≤19时    {        hens=0        当hens≤33时        {            chicks=100-cocks-hens            如果 (5*cocks+3*hens+chicks/3=100) 则输出            hens加1        }        cocks加1    }编写代码如下: #include "stdio.h"void main(){    int cocks, hens, chicks;    printf ("cocks  hens  chicks\n");    printf ("-------------------\n");    cocks=0;    while (cocks <= 19)    {        hens=0;        while (hens <= 33)        {            chicks = 100 - cocks - hens;            if ( cocks * 5 + hens * 3 + chicks / 3 == 100 )                printf ("%5d %5d %5d\n", cocks, hens, chicks);            hens++;        }        cocks++;    }    printf ("-------------------\n");} 运行结果:===========================cocks  hens  chicks-------------------    0    25    75    3    20    77    4    18    78    7    13    80    8    11    81   11     6    83   12     4    84-------------------===========================######################################更正########################################经热心人评论指点, 做如下改正:小鸡数必须为3的倍数:算法描述:cocks=0    当cocks≤19时    {        hens=0        当hens≤33时        {            chicks=100-cocks-hens            如果 (5*cocks+3*hens+chicks/3=100 且 小鸡数为3的倍数) 则输出            hens加1        }        cocks加1    }代码: #include "stdio.h"void main(){    int cocks, hens, chicks;    printf ("cocks  hens  chicks\n");    printf ("-------------------\n");    cocks=0;    while (cocks <= 19)    {        hens=0;        while (hens <= 33)        {            chicks = 100 - cocks - hens;            if ( cocks * 5 + hens * 3 + chicks / 3 == 100 && chicks % 3 == 0)                printf ("%5d %5d %5d\n", cocks, hens, chicks);            hens++;        }        cocks++;    }    printf ("-------------------\n");} 运行结果:===========================cocks  hens  chicks-------------------    0    25    75    4    18    78    8    11    81   12     4    84-------------------===========================

阅读(5636) | 评论(18)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册