您的位置:首页 > 编程语言

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

2005-05-27 11:18 253 查看
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],用来存储100内3的倍数,如下:

              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只

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程 存储