穷举
将所有可能性全部全部走一遍,使用IF筛选出满足的情况
练习:
1.单位给发了一张150元购物卡,
拿着到超市买三类洗化用品。
洗发水15元,香皂2元,牙刷5元。
求刚好花完150元,有多少种买法,
没种买法都是各买几样?
; ; ; x <= ; x++) { ; y <= ; y++) { ; z <= ; z++) { j++; + y * + z * == ) { i++; Console.WriteLine("方法{0},买洗发水【{1}】、牙刷【{2}】,香皂【{3}】", i, x, y, z); } } } } Console.WriteLine("一共有{0}种买法方法", i); Console.WriteLine("共走{0}遍", j);
答案
2.百鸡百钱:
公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,
总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100文钱?
; ; ; x * <= ; x++) { ; y <= ; y++) { ; z * ; z++) { j++; ) + y + (z * && x + z + y == ) { i++; Console.WriteLine("方法{0},买公鸡【{1}】、母鸡【{2}】,小鸡【{3}】 一共【{4}】只", i, x, y, z, x + z + y); } } } } Console.WriteLine("一共有{0}种买法方法", i); Console.WriteLine("共走{0}遍", j);
答案
迭代
从初始情况按照规律不断求解中间情况,最终推导出结果。
练习:
1.折纸超过珠峰 8848
double zhi = 0.070; ; for (; ; ) { ci++; zhi *= ; Console.WriteLine(+"M"); ) { break; } } Console.WriteLine("共折{0}遍", ci);
答案
2.第一天1分钱,第二天2分钱,第三天4分钱,依次递增
; ; ; z <= ; z++) { ) { qian = ; } else { qian *= ; sum += qian; } Console.WriteLine(); } Console.WriteLine();
答案
while循环
格式1:先判断,在做 while(表达式){}
格式2:先做,在判断 do{}while(表达式);
//for (int i = 1; i <= 5;i++ ){ } //int i = 1; //for (; i <= 5;i++ ){ } //int i = 1; //for (; i <= 5; ){ i++; } //int i = 1; //while(i <= 5){ i++; }
for 变 while
由上可知,for循环也可以变为 while循环;