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

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

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

    案例:

    //单位给发了一张150元购物卡,
    //拿着到超市买三类洗化用品。
    //洗发水15元,香皂2元,牙刷5元。
    //求刚好花完150元,有多少种买法,
    //每种买法都是各买几样?
    //设洗发水x 150/15==10
    //牙刷y 150/5==30
    //香皂z 150/2==75

    int sum = 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++)
    {
    sum++;
    if (15 * x + 5 * y + 2 * z == 150)
    {
    biao++;
    Console.WriteLine("这是第" + biao + "种买法:洗发水" + x + "瓶,牙刷" + y + "香皂" + z + "块");

    }
    }
    }

    }
    Console.WriteLine("共有" + biao + "种买法!");
    Console.WriteLine(sum);
    Console.ReadLine();

    案例

    //羽毛球拍15元,球3元,水2元。200元每种至少一个,有多少可能
    //设球拍X 200/15=20
    //设球y 200/3=66
    //设水 200/2=100
    int sum = 0;
    for (int x = 1; x <= 20;x++ )
    {
    for (int y = 1; y <= 66;y++ )
    {
    for (int z = 1; z <= 100;z++ )
    { if(15*x+3*y+2*z==200)
    {
    sum++;
    Console.WriteLine("羽毛球拍"+x+"个,球"+y+"个,水"+z+"瓶");
    }
    }
    }

    } Console.WriteLine(sum);
    Console.ReadLine();

    案例
    //百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,
    //总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100文钱?每种至少一只
    //公鸡设为 g 100/2=50
    //母鸡设为 m 100/1=100
    //小鸡设为 x 100/0.5=200


    //百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,
    //总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100文钱?
    //公鸡设为 g 100/2=50
    //母鸡设为 m 100/1=100
    //小鸡设为 x 100/0.5=200
    int sum = 0;
    for (int g = 0; g <= 50; g++)
    {
    for (int m = 0; m <= 100; m++)
    {
    for (int x = 0; x <= 200; x++)
    {

    if (2 * g + 1 * m + 0.5 * x == 100 && g + m + x == 100)
    {
    sum++;
    Console.WriteLine("公鸡" + g + "只," + "母鸡" + m + "只," + "小鸡" + x + "只");
    }
    }
    }

    }
    Console.WriteLine(sum);
    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:跳出本次循环,继续下次循环。

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

    案例:

    int a = 7;//884800000
    int i = 1;
    while (true)
    {
    a *= 2;

    if (a >= 884800000)
    {
    Console.WriteLine(i);
    Console.WriteLine(a);
    break;
    }
    i++;
    }

  • 相关阅读:
    maven超级pom内容
    elasticsearch日志删除命令
    maven 设置跳过测试
    centos7.4 开启ftp服务
    部分Linux时区改为东八区的方法
    docker overlay存储驱动介绍(传送门)
    HotSpot学习(一)——如何下载openjdk源码
    nginx 代理静态资源报 403
    【转载】C#通过遍历DataTable的列获取所有列名
    【转载】C#通过Remove方法移除DataTable中的某一列数据
  • 原文地址:https://www.cnblogs.com/nannan-0305/p/5263804.html
Copyright © 2011-2022 走看看