百钱买百鸡问题解题思路.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

 

迭代算法解题地一般思路 doc

  • 2008年07月08日 13:13
  • 34KB
  • 下载

动态规划问题解题思路和总结

  • 2017年04月12日 14:45
  • 1021KB
  • 下载

程序员面试金典(动态规划):1分,5分,10分,25分硬币面值组合问题(解题思路)

问题描述: 假设我们有8种不同面值的硬币{1,2,5,10,20,50,100,200},用这些硬币组合够成一个给定的数值n。例如n=200,那么一种可能的组合方式为 200 = 3 * 1...

哲学家就餐问题解题思路

  • 2010年03月28日 19:38
  • 2KB
  • 下载

坐标型DP问题的解题思想及思路

  • 2011年07月28日 22:27
  • 264KB
  • 下载

传教士和野人问题解题思路

原文地址:http://read.pudn.com/downloads37/sourcecode/math/118734/%E9%87%8E%E4%BA%BA%E4%BC%A0%E6%95%99%E5...
  • wyyl1
  • wyyl1
  • 2013年01月21日 14:48
  • 3529

C#的解题思路(1):不重复随机数的产生问题 .

说明:写作本文的出发点是最近和一个有3年开发经验的.NET开发人员聊天,他跟我说经常没有思路,在实际开发中我也见过一个具有4、5年开发经验的开发人员几乎没有灵活变通的能力,所以打算写一系列文章,在这个...
  • qiheju
  • qiheju
  • 2012年03月23日 00:55
  • 371

Hackerearth.com编程问题解题思路系列:Roy's Chocolates

问题描述: 设从1至n编号的n人围成一圈,给出序号M[i]的m人是被标记的,从序号为b的人开始,每过s人答一声“到”。要求找出这样的b和s,使得被标记的m人全部都答过一声“到”,而没有被标记过的人不...
  • idead
  • idead
  • 2015年12月30日 21:50
  • 137

【C语言】街区最短路径问题解题思路

描述 一个街区有很多住户,街区的街道只能为东西、南北两种方向。 住户只可以沿着街道行走。 各个街道之间的间隔相等。 用(x,y)来表示住户坐在的街区。 例如(4,20),表示用...

杭电 2553 N皇后问题 递归回溯 打表 附解题思路

N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:百钱买百鸡问题解题思路.doc
举报原因:
原因补充:

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