经典问题:百钱买百鸡

        问题:用100元买100只鸡,大公鸡5元1只,母鸡3元1只,小鸡1元3只。问各能买多少只?

      

        分析完后相当于求解下面的三元三次方程:

           i+3j+k/3=100

           i+j+k=100;

        程序如下:(暂时是最优)

public class Test2 {
    public static void main(String[] args)
    {
        int i,j,k;
        for(i=0;i<=14;i++)
        {
            j=(100-7*i)/4;
            k=100-i-j;
            if(5*i+3*j+k/3==100 && k%3==0)
            {
                System.out.println(i+" "+j+" "+k);
            }
        }
    }
}

       

        个人总结:

     1.对于算法设计问题,第一点要打破传统思维,不能什么都让计算机去做,要学会让计算机像人一样去思考问题,要学会懒,只有这样才可能写出最优算法。

     2.对于上述解答:可以从以下几个方面进行思考

     省略循环个数、省略循环次数、利用数学公式进行最值分析。

     3.回顾的时候,发现 i<=14 需要稍微解释一下:

         切入点:先计算出i大公鸡的最大个数,消除方程式k变量后,得到

         7i + 4j = 100

         算出i的最大值为14

学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:543120397 我们一起学Java!

你可能感兴趣的:(高效算法设计)