10月10日--穷举迭代while循环
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10月10日--穷举迭代while循环相关的知识,希望对你有一定的参考价值。
穷举
将所有可能性全部全部走一遍,使用IF筛选出满足的情况
练习:
1.单位给发了一张150元购物卡,
拿着到超市买三类洗化用品。
洗发水15元,香皂2元,牙刷5元。
求刚好花完150元,有多少种买法,
没种买法都是各买几样?
int i = 0; int j = 0; for (int x = 0; x <= 10; x++) { for (int y = 0; y <= 30; y++) { for (int z = 0; z <= 75; z++) { j++; if (x * 15 + y * 5 + z * 2 == 150) { 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文钱?
int i = 0; int j = 0; for (int x = 0; x * 2 <= 100; x++) { for (int y = 0; y <= 100; y++) { for (int z = 0; z * 0.5 <= 100; z++) { j++; if ((x * 2) + y + (z * 0.5) == 100 && x + z + y == 100) { 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; int ci = 0; for (; ; ) { ci++; zhi *= 2; Console.WriteLine("值:" + zhi / 1000+"M"); if (zhi > 8848000) { break; } } Console.WriteLine("共折{0}遍", ci);
2.第一天1分钱,第二天2分钱,第三天4分钱,依次递增
double qian = 1; double sum = 1; for (int z = 1; z <= 40; z++) { if (z == 1) { qian = 1; } else { qian *= 2; sum += qian; } Console.WriteLine("第{0}天,{1}元", z, qian / 100); } Console.WriteLine("共{0}元", sum / 100);
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循环;
以上是关于10月10日--穷举迭代while循环的主要内容,如果未能解决你的问题,请参考以下文章