首页 > 代码库 > 2016年10月10日--穷举、迭代、while循环

2016年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循环;

 

2016年10月10日--穷举、迭代、while循环