zoukankan      html  css  js  c++  java
  • 穷举迭代03/10

                                                                                                       

    穷举迭代03/10

    for循环拥有两类:

    1、穷举:

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

    for循环拥有两类:

    2、穷举:

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

    for循环  for(int i = 1; i<=5;i++)

    {

      循环体;

    }

    while样式      int i= 1;

    while(表达式(i<=5))

    {

                      循环体;

                      状态改变(i++);

    }

    do while 样式    do

    {

                       循环体;

                       状态改变(i++);

    }while(表达式(i<=5))

    练习:

    1. 单位给发了一张150元购物卡,拿着到超市买三类洗化用品。洗发水15元,香皂2元,牙刷5元。求刚好花完150元,有多少种买法,没种买法都是各买几样?

    //设洗发水x             150/15==10

                //牙刷y                   150/5==30

            //香皂z                   150/2==75

                int a = 0;

                int sum = 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)

                            {

                                a++;

                                Console.WriteLine("第" + a + "种买法,洗发水" + x + "瓶,牙刷" + y + "把,香皂" + z + "块。");

                            }

     

                        }

                    }

                }

                Console.WriteLine("共有" + a + "种买法。");

                Console.WriteLine("总共计算" + sum + "次。");

     

     

     

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

                //公鸡x,50

                //母鸡y,100

                //小鸡z,200

                int sum = 0;

                int sum1 = 0;

                for (int x = 0; x <= 50;x++ )

                {

                    for (int y = 0; y <= 100;y++ )

                    {

                        for (int z = 0; z <= 200;z++ )

                        {

                            sum1++;

                            if((x+y+z==100)&&(2*x+1*y+0.5*z==100))

                            {

                                sum++;

                                Console.WriteLine("第"+sum+"种方法:公鸡"+x+"只,母鸡"+y+"只,小鸡"+z+"只。");

                            }

                        }

                    }

                }

                Console.WriteLine("总共计算了"+sum1+"次。");

     

    3、         纸张可以无限次对折,纸张厚度为0.07毫米。问多少次对折至少可以超过8848?

            int a = 7;

                int b = 884800000;

                for (int i = 1; ; i++)

                {

                    a *= 2;

                    if (a >= b)

                    {

                        Console.WriteLine("这是第" + i + "次折叠。");

                        Console.WriteLine("高度为" + a);

                        break;

                    }

            }

     

  • 相关阅读:
    c:forTokens标签循环输出
    jsp转long类型为date,并且格式化
    spring中@Param和mybatis中@Param使用区别(暂时还没接触)
    734. Sentence Similarity 有字典数组的相似句子
    246. Strobogrammatic Number 上下对称的数字
    720. Longest Word in Dictionary 能连续拼接出来的最长单词
    599. Minimum Index Sum of Two Lists两个餐厅列表的索引和最小
    594. Longest Harmonious Subsequence强制差距为1的最长连续
    645. Set Mismatch挑出不匹配的元素和应该真正存在的元素
    409. Longest Palindrome 最长对称串
  • 原文地址:https://www.cnblogs.com/zst062102/p/5263942.html
Copyright © 2011-2022 走看看