chaoyanglee163的专栏

人活着是要有压力的,但压力不能让一个人失去自我;压力存在,动力存在,心中永远的希望让我孜孜不倦......

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

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

 

阅读更多
文章标签: 编程 存储
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭