羽毛球拍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();