百錢買百雞的問題(遞歸解法)

題目:公雞5文錢一隻,母雞3文錢一隻,小雞3只一文錢,ios

用100文錢買一百隻雞,其中公雞,母雞,小雞都必需要有,問公雞,母雞,小雞要買多少隻恰好湊足100文錢。spa

爲程序計算方便,轉換一下數字,公雞15錢一隻,母雞9錢一隻,小雞1錢一隻.用三百文錢買一百隻雞,其中公雞,母雞,小雞都必需要有,問公雞,母雞,小雞要買多少隻恰好湊足300文錢。code

常規解法:blog

 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             //公雞的上線
 6             for (int x = 1; x < 20; x++)
 7             {
 8                 //母雞的上線
 9                 for (int y = 1; y < 33; y++)
10                 {
11                     //剩餘小雞
12                     var z = 100 - x - y;
13 
14                     if ((z % 3 == 0) && (x * 5 + y * 3 + z / 3 == 100))
15                     {
16                         Console.WriteLine("公雞:{0}只,母雞:{1}只,小雞:{2}只", x, y, z);
17                     }
18                 }
19             }
20             Console.Read();
21         }
22     }

遞歸解法:遞歸

 1 #include <iostream>
 2 #include <iomanip>
 3 #include <algorithm>
 4 using namespace std;
 5 const int CHICK_KIND = 3;
 6 const int TOTAL_MONEY=300;
 7 const int TOTAL_COUNT=100;
 8 
 9 int priceArray[CHICK_KIND]={15,9,1};
10 int resultArray[CHICK_KIND]={0,0,0};
11 
12 void calculate(int remain_money,int index);
13 int main(int argc,char **argv)
14 {
15     calculate(TOTAL_MONEY,0);
16 
17     return 0;
18 }
19 void calculate(int remain_money,int index)
20 {
21     int time=remain_money/priceArray[index];
22 
23     for(int i=0;i<=time;i++)
24     {
25         resultArray[index]=i;
26         if(index==CHICK_KIND-1)
27         {
28             if(resultArray[0]+resultArray[1]+resultArray[2]==TOTAL_COUNT&&resultArray[0]>0&&resultArray[1]>0&&resultArray[2]>0)
29                 if(resultArray[0]*priceArray[0]+resultArray[1]*priceArray[1]+resultArray[2]*priceArray[2]==TOTAL_MONEY)
30                     cout<<"("<<resultArray[0]<<","<<resultArray[1]<<","<<resultArray[2]<<")"<<endl;
31         }
32         else
33         {
34             int remainMoney=remain_money;
35             remainMoney=remainMoney-priceArray[index]*resultArray[index];
36             calculate(remainMoney,index+1);
37         }
38     }
39 }
相關文章
相關標籤/搜索