【慢慢學算法】:百雞問題


   題目描述:   

    用小於等於n元去買100只雞,大雞5元/只,小雞3元/只,還有1/3元每只的一種小雞,分別記為x只,y只,z只。編程求解x,y,z所有可能解。

輸入:

    測試數據有多組,輸入n。

輸出:

    對於每組輸入,請輸出x,y,z所有可行解,按照x,y,z依次增大的順序輸出。

樣例輸入:
40
樣例輸出:
x=0,y=0,z=100
x=0,y=1,z=99
x=0,y=2,z=98
x=1,y=0,z=99

解題思路:
先將題意轉化為一個數學問題,然后列出相應的方程,化簡方程,然后通過對剩下的變量進行窮舉,輸出符合條件的結果。
代碼:
 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int main()
 5     {
 6     int n;
 7     while(cin >> n)
 8     {
 9         for(int i = 0; i <= 100; i++)
10         for(int j = 0; j <= 100; j++)
11         {
12             if((14 * i + 8 * j) <= n * 3 - 100)
13             printf("x=%d,y=%d,z=%d\n",i,j,100-i-j);
14             else
15             break;
16         }
17     }
18     return 0; 
19     }

   收獲:   

1. C++的cout輸出比C中的printf慢!!!在這個題目中分別為10ms和50ms...

   2. 優先將題目轉化為數學問題進行化簡解決,然后在通過程序實現,不要一上來就悶頭寫代碼。

     3. 方程中的未知數可以在程序中拿窮舉來解決




免責聲明!

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



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