百錢買百雞三種算法(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);
                }
            }
        }
}

 以上三種就是百錢買百雞的三種算法!!!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM