穷举:把所有可能的情况都走一遍,使用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();