//循环可以解决的问题类型
//穷举,把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况。 //单位给发了一张150元购物卡, //拿着到超市买三类洗化用品。 //洗发水15元,香皂2元,牙刷5元。 //求刚好花完150元,有多少种买法, //每种买法都是各买几样? //洗发水 x 10 //牙刷 y 30 //香皂 z 75 int ci = 0; int biao = 0; for (int x = 0; x <= 10; x++) { for (int y = 0; y <= 30; y++) { for (int z = 0; z <= 75; z++) { ci++; if (15 * x + y * 5 + z * 2 == 150) { biao++; Console.WriteLine("第{0}种买法:洗发水{1}瓶,牙刷{2}支,香皂{3}块。", biao, x, y, z); } } } } Console.WriteLine("总共有{0}种买法。", biao); Console.WriteLine(ci); Console.ReadLine();
//迭代,从初始情况按照规律不断求解中间情况,最终推导出结果。
//纸张可以无限次对折,纸张厚度为0.07毫米。 //问多少次对折至少可以超过8848? //double height = 0.07;//8848m=8848000 //int ci = 0; //while(height<=8848000) //{ // ci++; // height *= 2;//height=height*2; //} //Console.WriteLine(ci); //Console.ReadLine();//百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,
//小鸡半文钱一只,总共只有100文钱, //如何在凑够100只鸡的情况下刚好花完100文钱?int ci = 0;
for (int a = 0; a <= 50; a++) { for (int b = 0; b <= 100; b++) { for (int c = 0; c <= 200; c++) { if (a * 2 + b * 1 + c * 0.5 == 100) { if (a + b + c == 100) { ci++; Console.WriteLine("总共有{0}种买法:公鸡{1}只,母鸡{2}只,小鸡{3}只", ci, a, b, c); } } }}
} Console.ReadLine(); //现有1分,2分,5分钱无数 //求组成1元钱,有多少种组合方式int biao = 0;
for (int a = 0; a <= 100; a++) { for (int b = 0; b <= 50; b++) { for (int c = 0; c <= 20; c++) { if (a * 1 + b * 2 + c * 5 == 100) { biao++; Console.WriteLine("总共有{0}种组合方式:一分的{1}个,2分的{2},5分的{3}", biao, a, b, c); } } } } Console.WriteLine(biao); Console.ReadLine(); //五个小朋友排成一队,问第一个多大了, //第一个说比第二个大两岁,问第二个多大了, //第二个说比第三个大两岁。。。以此类推, //问第5个小朋友,说自己3岁了。问第一个小朋友几岁了?int a = 3;
for (int i = 5; i > 1; i--){ a += 2;}Console.WriteLine(a);