for循环练习

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

猜你喜欢

转载自www.cnblogs.com/tianranhui/p/10094608.html