zoukankan      html  css  js  c++  java
  • 穷举 迭代 while

    for循环拥有两类:

    穷举: 把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况。

    例:1.单位给发了一张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();

          2.百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100文钱?同百马百担

                int n = 0;
                for (int g = 0; g * 2 <= 100; g++)
                {
                    for (int m = 0; m <= 100; m++)
                    {
                        for (int x = 0; x * 0.5 <= 100; x++)
                        {
                            if (g * 2 + m + x * 0.5 == 100 && g + m + x == 100)
                            {
                                Console.WriteLine("第{0}种:{1}只公鸡,{2}只母鸡,{3}只小鸡", n, g, m, x);
                                n++;
                            }
                        }
                    }
                }
                Console.WriteLine("总共有{0}种可能性", n);
                Console.ReadLine();

         3.有1分钱,2分钱,5分钱的硬币,要组合出来2角钱,有几种组合方式,分别各多少个?

        int n = 0;
                for (int a = 0; a * 1 <= 20; a++)
                {
                    for (int b = 0; b*2 <= 20; b++)
                    {
                        for (int c = 0; c *5 <= 20; c++)
                        {
                            if (a * 1 + b*2 + c * 5 == 20)
                            {   
                                n++;
                                Console.WriteLine("第{0}种:{1}枚1分钱,{2}枚2分钱,{3}枚5分钱", n, a, b, c);
                             }
                        }
                    }
                }
                Console.WriteLine("总共有{0}种可能性", n);
                Console.ReadLine(); 

    迭代: 从初始情况按照规律不断求解中间情况,最终推导出结果。

    例:1.五个小朋友排成一队,问第一个多大了,第一个说比第二个大两岁,问第二个多大了,第二个说比第三个大两岁。。。以此类推,问第5个小朋友,说自己3岁了。

            问第一个小朋友几岁了?

                int n = 1;
                int a = 3;
                while (n < 5)
                {
                    a += 2;
                    n++;
                }
                Console.WriteLine("第一个小朋友{0}岁了", a);
                Console.ReadLine();

         2.纸张可以无限次对折,纸张厚度为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();

    while 循环

    其实是for循环的变形写法
    for(int i = 1; i<=5;i++)
    {
     循环体;
    }

    上面的for循环可以写成
    int i= 1;
    for(;i<=5;)
    {
     循环体;
     i++;
    }

    写成while就是以下样式
    int i= 1;
    while(表达式(i<=5))
    {
     循环体;
     状态改变(i++);
    }

    do
    {
     循环体;
     状态改变(i++);
    }while(表达式(i<=5))
    注意:do while是不管满不满足表达式,我都会先执行一遍。

    跳转语句:
    break:跳出整个循环
    continue:跳出本次循环,继续下次循环。

  • 相关阅读:
    [Inno Setup] 待读
    How do you close then restart explorer.exe in Inno Setup uninstall using the Restart Manager?
    [Inno Setup] 安装与卸载 Shell Extension DLL
    用Linux 搭建 PXE 网络引导环境
    优化Docker 镜像小技巧 转载:https://mp.weixin.qq.com/s/sSgXYbF5anubvVYQfVGQ3g
    升级centos内核,转载:http://www.mydlq.club/article/79/
    故障排查:Kubernetes 中 Pod 无法正常解析域名 转载:http://www.mydlq.club/article/78/
    VirtualBox虚拟机全屏显示
    temp
    Kubernetes Deployment故障排除图解指南 转载
  • 原文地址:https://www.cnblogs.com/yp11/p/5827520.html
Copyright © 2011-2022 走看看