題目:公雞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 }