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

 

由上可知,for循环也可以变为 while循环;

 

以上是关于10月10日--穷举迭代while循环的主要内容,如果未能解决你的问题,请参考以下文章

穷举 迭代 while

穷举 迭代 while

while do while以及穷举和迭代

循环语句while与for的穷举迭代

穷举迭代以及while代替for循环的使用

7月18日