穷举练习——7月24日

穷举:把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况

练习一:购物

//单位给发了一张150元购物卡,拿着到超市买三种洗化用品,
            //洗发水15元(x)、香皂2元(z),牙刷5元(y),
            //求刚好花完150元有多少种买法,每种买法都是各买几样
            int sum = 0;
            for (int x = 0; x * 15 <= 150; x++)
            {
                for (int y = 0; y * 5 <= 150; y++)
                {
                    for (int z = 0; z * 2 <= 150; z++)
                    {
                        if (x * 15 + y * 5 + z * 2 == 150)
                        {
                            sum++;
                            Console.WriteLine("" + sum + "种买法是:洗发水" + x + "瓶,香皂" + z + "块,牙刷" + y + "只。");
                        }
                    }
                }
            }
            Console.WriteLine("总共有" + sum + "种买法!");
            Console.ReadLine();

练习二:百鸡百钱

            //公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,
            //现在有100文钱,要求买100只鸡
            //问每种至少买一只,符合要求的有多少种买法,每种买法的每种鸡各能买多少只
            int sum = 0;
            for (int g = 1; g * 2 <= 100; g++)
            {
                for (int m = 1; m * 1 <= 100; m++)
                {
                    for (double x = 1; x * 0.5 <= 100; x++)
                    {
                        if (g * 2 + m * 1 + x * 0.5 == 100 && g + m + x == 100)
                        {
                            sum++;
                            Console.WriteLine("" + sum + "种买法是:公鸡" + g + "只,母鸡" + m + "只,小鸡" + x + "只!");
                        }
                    }
                }
            }
            Console.WriteLine("总共有" + sum + "种买法!");
            Console.ReadLine();

练习三:马驮粮食

//大马驼2石粮食,中等马驼1石粮食,两头小马驼1石粮食,
            //要用100匹马,驼100石粮食,该如何分配?
            int sum = 0;//设置变量,计算有多少种分配方法
            int bian = 0;//计算总共循环了多少次
            for (int d = 0; d * 2 <= 100; d++)
            {
                for (int z = 0; z * 1 <= 100; z++)
                {
                    for (double x = 0; x * 0.5 <= 100; x++)
                    {
                        bian++;
                        if (d * 2 + z * 1 + x * 0.5 == 100 && d + z + x == 100)
                        {
                            sum++;//计算的是有多少种可能的方法
                            Console.WriteLine("" + sum + "种方法是:大马驼" + d + "石粮食,中马驼" + z + "石粮食,小马驼" + x + "石粮食。");
                        }
                    }
                }
            }
            Console.WriteLine("总共循环了:" + bian + "遍。");
            Console.WriteLine("共有" + sum + "种分配方法。");
            Console.ReadLine();

练习四:组钱

//有1分钱,2分钱,5分钱的硬币,要组合出来1.5元钱,有几种组合方式,分别各多少个
            //1.5元=150分
            int sum = 0;
            for (int y = 0; y * 1 <= 150; y++)
            {
                for (int e = 0; e * 2 <= 150; e++)
                {
                    for (int w = 0; w * 5 <= 150; w++)
                    {
                        if (y * 1 + e * 2 + w * 5 == 150)
                        {
                            sum++;
                            Console.WriteLine("第{0}种组合方法是:1分钱{1}个,2分钱{2}个,5分钱{3}个。", sum, y, e, w);
                        }
                    }
                }
            }
            Console.WriteLine("总共有" + sum + "种组合方法!");
            Console.ReadLine();

原文地址:https://www.cnblogs.com/juyangchao12/p/5701715.html