百钱买百鸡问题解题思路.doc

原创 2005年05月27日 11:18:00

Pcw-cjy@vip.sina.com编程擂台

Pcw-soft@vip.sina.com 软件世界

姓氏排序:pcw-ys@vip.sina.com

 

拿到这个题目,心中的第一个想法就是,这肯定就是一个三元一次方程组求解的问题,先敲定一个变量的值,再利用另外两个值循环。

       但是,就本题目来讲,一味的蛮干循环,将会增加程序的复杂度,效率肯定不高,经简单分析:此题中所求的变量值有一个最基本的值域范围,我们设定所求的公鸡数目变量为maleChick_num、母鸡数目为femaleChick_num、雏鸡数目为childChick_num,这样一个基本值域可以确定:maleChick_num[0,20], femaleChick_num[0,33], childChick_num无论多少肯定在0~100之间,但是由题目“每3只鸡子价值一钱”可知,雏鸡的数目必定是3的倍数,这样就可确定雏鸡的数目是100内的3的倍数。好了,范围一步步缩小,题目结果顷刻可见!

       围绕题目,心中必须有这两个方程

                     1). maleChick_num*5+femaleChick_num*3+childChick_num/3==100

                     2). maleChick_num+femaleChick_num+childChick_num==100

第一个方程是根据总钱数而定,无论三样鸡子各买多少,但总“资本”是定额;第二个方程是根据所有鸡子的数目而定,无论您钱有多少,“市场”的“资源”是有限的(仅100只鸡子)。

       为了得到雏鸡数目的精确值域,定义一个中间变量childChick_tempNum[j],用来存储1003的倍数,如下:

              int j = 0;

                     for (int i = 1; i <= 100; i++) {

                     if (i % 3 == 0) {

                            childChick_tempNum[j] = i;

                            j++;

                     }

              }

       此时,childChick_tempNum[j]数组的值为{ 0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93, 96,99}

       人工活已经晚了,剩下的就是机器的事情了:

列出三个循环,以前面两个方程作为判断条件,得出最宗的结果,循环部分的代码如下:

                     for(maleChick_num=0;maleChick_num<=20;maleChick_num++){

                     for(femaleChick_num=0;femaleChick_num<=33;femaleChick_num++){

                            for(int i=0;i<childChick_tempNum.length;i++){

                                   childChick_num = childChick_tempNum[i];

                                   if(maleChick_num*5+femaleChick_num*3+childChick_num/3==100 &&               maleChick_num+femaleChick_num+childChick_num==100){

                                          System.out.println("百钱买百鸡的结果可以是:/n/t/t雏鸡"+childChick_num+"/t母鸡"+femaleChick_num+"/t公鸡"+maleChick_num+"");

                                   }

                            }

                            }

                     }

 

程序输出的最后可行结果有四组,分别为:

                     1雏鸡75 母鸡25   公鸡0

           2雏鸡78 母鸡18   公鸡4

           3雏鸡81 母鸡11   公鸡8

           4雏鸡84 母鸡4     公鸡12

 

js百钱买白鸡的几种方法

用百钱买白鸡,公鸡5钱一只,母鸡3钱一只,小鸡三只1钱 第一种方法: var x,y,z; for(x=0;x...
  • lihuaxing2012
  • lihuaxing2012
  • 2015年10月13日 19:42
  • 1728

Java经典算法——百钱百鸡

题目: 公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱,用100文钱买100只鸡,可以怎么买? public class BQBJ { public static void main(...
  • Roger1279
  • Roger1279
  • 2017年03月22日 23:15
  • 3291

第四次上机实验 用穷举法解决百钱百鸡问题

一 问题  鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何? 代码  二 运行结果 三 心得体会...
  • lhy2017
  • lhy2017
  • 2017年04月21日 14:48
  • 453

穷举法解决百钱百鸡问题

 /*  *Copyright (c) 2015,烟台大学计算机学院  *All rights reserved.  *文件名称:text.cpp  *作者:汤善晔  *完成日...
  • tsy971209
  • tsy971209
  • 2016年06月20日 15:04
  • 384

Java实现百钱买百鸡

1、问题描述         今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡百只,问鸡翁、母、鶵各几何?答曰:鸡翁四,值钱二十;鸡母十八,值钱五十四;鸡鶵七十八,值钱二十六。又答:鸡翁...
  • you23hai45
  • you23hai45
  • 2013年11月16日 14:09
  • 4413

VFP趣味编程:百钱买百鸡

公鸡3元一只,母鸡5元一只,小鸡1元三只。100元钱买100只鸡,请算出公鸡、母鸡、小鸡的数目。思路分析:题目包含的条件有两个:一是共买了100支鸡,二是共花了100元钱。我们做最极端的假设,公鸡可能...
  • cdbqss1
  • cdbqss1
  • 2007年03月30日 23:00
  • 3370

C++实验4:百钱买百鸡问题

一。问题及代码/* * 文件名称:aaaa.cpp * 作 者:andy * 完成日期:2016年 4 月 25 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分: ...
  • z470661059
  • z470661059
  • 2016年04月26日 20:03
  • 1678

利用JAVA实现“百鸡百钱”问题

题目:公鸡5元一只,母鸡3元一只,3只小鸡1元,如果用100元钱,买100只鸡,不佘不欠,可以买公鸡,母鸡,小鸡,各多少只。分析这个问题可以说是高级语言中的经典问题了,利用简单的算法和逻辑来解决简单的...
  • baidu_28851651
  • baidu_28851651
  • 2017年11月27日 20:28
  • 136

11.03 作业 Problem A: 百钱买百鸡问题

Description “百钱买百鸡”是我国著名的古代数学问题,中国古代数学家张丘建在他的《算经》中提出了这样一个问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各...
  • zhengyuan233
  • zhengyuan233
  • 2016年11月15日 16:52
  • 838

c++上机实验4—百钱买百鸡问题

一、问题及代码 /* * 文件名称: 穷举法计算百钱买百鸡问题 * 作 者: 杨翔宇 * 完成日期: 2016 年 4 月 21 日 * 版 本 号:v1.0 ...
  • ecjt_yxy
  • ecjt_yxy
  • 2016年04月21日 09:41
  • 518
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:百钱买百鸡问题解题思路.doc
举报原因:
原因补充:

(最多只允许输入30个字)