zoukankan      html  css  js  c++  java
  • 百钱买百鸡三种算法(C#版)

    题目需求:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

    第一种算法(也是最消耗时间的,靠穷举进行求出):这种方法可以进行一些优化知道两个鸡的数量后,第三种也就知道了

    public static void Hundred_Money()
            {
                for (int i = 0; i <= 100; i++) {
                    for (int j = 0; j <= 100; j++) {
                        for (int z = 0; z <= 100; z++) {
                            if (i*5+j*3+z/3.0f==100&&i+j+z==100)
                            {
                                Console.Write ("公鸡数目有:{0},母鸡数目有:{1},小鸡数目有:{2}",i,j,z);
                                Console.WriteLine ();
                            }
                        }
    
                    }
                }
            }

    第二种算法:(利用数学公式进行推导)

    public void Hundred_Money1()
            {
                //公鸡的数量
                int cockCount = 0;
                //母鸡的数量
                float henCount=0;
                //小鸡的数量
                float smallCount=0;
                for (cockCount = 0; cockCount < 100; cockCount++)
                {
                    henCount = 25 - 7f / 4f * cockCount;
                    smallCount = 75 + 3f / 4f * cockCount;
                    if (henCount>0&&smallCount>0)
                    {
                        if (((int)henCount==henCount)&&((int)smallCount==smallCount))
                        {
                            Console.WriteLine ("公鸡数目有:{0},母鸡数目有:{1},小鸡数目有:{2}",cockCount,henCount,smallCount);
                        }
    
                    }
    
                }
            }
    

      

    第三种算法(利用递归的方式进行计算):

    class MainClass
        {
            
            public static void Main(string[] args)
            {
                MethodClass method = new MethodClass ();
                int[] priceArray={15,9,1};
                int[] resultArray={0,0,0};
                method.Hundred_Money2(priceArray,resultArray,300,0);
            }
        }
    class MethodClass
    {
        public void Hundred_Money2(int[] priceArray,int[] resultArray,int remain_money,int index)
            {
                int time=remain_money/priceArray[index];
                for(int i=0;i<=time;i++)
                {
                    resultArray[index]=i;
                    if(index==2)
                    {
                        if(resultArray[0]+resultArray[1]+resultArray[2]==100&&resultArray[0]>=0&&resultArray[1]>=0&&resultArray[2]>=0)
                            if(resultArray[0]*priceArray[0]+resultArray[1]*priceArray[1]+resultArray[2]*priceArray[2]==300)
                                Console.WriteLine ("公鸡有:"+resultArray[0]+",母鸡有:"+resultArray[1]+",小鸡有:"+resultArray[2]);
                    }
                    else
                    {
                        int remainMoney=remain_money;
                        remainMoney=remainMoney-priceArray[index]*resultArray[index];
                        Hundred_Money2(priceArray,resultArray,remainMoney,index+1);
                    }
                }
            }
    }
    

     以上三种就是百钱买百鸡的三种算法!!!!!

  • 相关阅读:
    个人作业——软件评测
    软件工程第五次作业——结对编程的实现
    软件工程第三次作业
    软件工程第一次作业
    两个矩形面积交
    二维并查集
    Java 作业 1
    练习题
    线性表

  • 原文地址:https://www.cnblogs.com/baosong/p/8502649.html
Copyright © 2011-2022 走看看