for迴圈練習
阿新 • • 發佈:2018-12-10
羽毛球拍15元,球3元,水2元。200元每種至少一個,有多少種買法
解題思路
窮舉法
先確定條件的大致範圍,並在範圍內挨個驗證情況,
然後根據所需要的條件過濾出所需的條件。
羽毛球拍最多買13個,球最多買66個,水最多買100個
方法一
int count = 0; //迴圈次數 int num = 0; //多少種買法 for (int i = 1; i <= 13; i++) //羽毛球拍最多可以買多少次 { for (int j = 1; j <= 66; j++) //球最多可以買多少次 { for (int k = 1; k <= 100; k++) //水最多可以買多少次 { count++; if (i * 15 + j * 3 + k * 2 == 200) //各個商品的價格相加登入總價格 { num++; Console.WriteLine("羽毛球拍:{0},球:{1},水:{2},共有{3}次買法", i, j, k, num); } } } }
方法二
比方法一效率高
先拿著錢和羽毛球拍的價格計算最多可以買多少個羽毛球拍,
然後拿著每個羽毛球拍的花的錢計算出球可以買多少個,
最後拿著羽毛球拍和球花的錢計算出水可以買多少瓶水。
int money = 200; int f1m = maney / 15; for(int a = 1; a <= f1m; a++) { int f2m = (maney - (15 * a)) / 3; for (int b = 1; b <= f2m; b++) { int c = (maney - (15 * a + b * 3)) / 2; if (a * 15 + b * 3 + c * 2 == maney) { num++; Console.WriteLine("羽毛球拍{0},球{1},水{2},共有:{3}", a, b, c, num); } } } Console.ReadKey();