日期:2014-05-20  浏览次数:20712 次

百元买百鸡问题。
假设公鸡 2元/只,母鸡 3元/只,小鸡 3元/只,用100元买100只鸡,有多少种算法,求好理解的算法,感激不尽。

------解决方案--------------------
Java code
for (int i=0; i<=100/2; i++) { //i表示公鸡数,最少0只,最多100(元)/2(元)=50只
    for (int j=0; j<=(100-2*i)/3; j++) { //j表示母鸡数
        int k = (100-i-j); //k表示小鸡数

         if (2*i+3*j+3*k == 100) { //如果价钱刚好是100
            System.out.printf("公鸡:%d, 母鸡:%d, 小鸡:%d\n", i, j, k);
        }
    }
}

------解决方案--------------------
小鸡为1元3只时
[code=Java][/code]
for (int i=0; i<=100/2; i++) { //i表示公鸡数,最少0只,最多100(元)/2(元)=50只
for (int j=0; j<=(100-2*i)/3; j++) { //j表示母鸡数
int k = (100-i-j); //k表示小鸡数
if (2*i+3*j+k/3 == 100) { //如果价钱刚好是100
if(k%3==0){
System.out.printf("公鸡:%d, 母鸡:%d, 小鸡:%d\n", i, j, k);
}
}
}
}
------解决方案--------------------
[code=Java][/code]public class Chook{
public static void main(String args[])
{
int x,y,z;
for(x=0;x<50;x++)
{
for(y=0;y<33;y++)
{
if(2*x+3*y+(100-x-y)/3==100&&(100-x-y)%3==0)
System.out.println("公鸡有"+x+"只 母鸡有"+y+"只 小鸡有"+(100-x-y)+"只");
}
}
}

}
------解决方案--------------------
for (int i=0; i<=100/2; i++) { //i表示公鸡数,最少0只,最多100(元)/2(元)=50只
for (int j=0; j<=(100-2*i)/3; j++) { //j表示母鸡数
int k = (100-i-j); //k表示小鸡数

if (2*i+3*j+3*k == 100) { //如果价钱刚好是100
System.out.printf("公鸡:%d, 母鸡:%d, 小鸡:%d\n", i, j, k);
}
}
}
------解决方案--------------------
如果小鸡是一元3只:

for(int gj=0;gj<100/2;gj++){ //gj是公鸡的数量
for(int mj=0;mj<100/3;mj++){ //mj是母鸡的数量
for(int xj=0;xj<100*3;xj++){ //xj是小鸡的数量
if(gj*2+mj*3+xj/3==100&&gj+mj+xj==100){
System.out.println(gj+"----"+mj+"----"+xj);
}
}
}
}
------解决方案--------------------
探讨
for (int i=0; i<=100/2; i++) { //i表示公鸡数,最少0只,最多100(元)/2(元)=50只
for (int j=0; j<=(100-2*i)/3; j++) { //j表示母鸡数
int k = (100-i-j); //k表示小鸡数

if (2*i+3*j+3*k == 100) { //如果价钱刚好是100
System.out……

------解决方案--------------------
都说这个问题无聊,其实给的都不是最简解法。

这个问题的最简解法不是双层循环,而是单层循环。

分析这个问题,完全可以简化。

如果100元全买小鸡,能买300只小鸡,多出来200的单位,这200的单位实际上是需要公鸡和母鸡数来抵消的。
一只公鸡等于6只小鸡,一只母鸡等于9只小鸡,所以每多一个公鸡,200就被抵消5,多一个母鸡,200被抵消8。

所以这个问题简化后,应该是:几个8和几个5的和等于200?(仔鸡数等于100-8的个数-5的个数)

很显然,单层循环就OK了。
------解决方案--------------------
穷举算法