C#4 for循环 迭代法 穷举法应用

 

for()循环。

 

四要素:

 

初始条件,循环条件,状态改变,循环体。 执行过程:

 

初始条件--循环条件--循环体--状态改变--循环条件....

 

注意:for的小括号里面分号隔开,for的小括号后不要加分号。 for的嵌套。 应用:迭代法,穷举法。

 

一、迭代法:

 

有一定规律。 每次循环都是从上次运算结果中获得数据,本次运算的结果都是要为下次运算做准备。

 

例: 1.100以内所有数的和。

 

2.求阶乘

 

3.求年龄。

 

4.折纸。

 

5.棋盘放粮食自己做)

 

6.猴子吃桃子

 

7.落球问题。(自己做)一个球从10米高度落下,每次弹起2/3的高度。问第五次弹起后的高度是多少? 8.兔子小兔子的问题。一对新生兔,到三个月开始生一对小兔,以后每个月都会生一对小兔,小兔不断长大也会生小兔。假设兔子不死,每次只能生一对(公母),问第24末有多少只兔子?

 

 

 

二、穷举法: 用循环把各种可能的情况都给走一遍,然后用if条件把满足要求的结果给筛选出来。

 

 

 

1.100以内的与7有关的数。

 

 

 

2.有三种硬币若干:1分,2分,5分。要组合15,有哪些组合方式?

 

 

 

3.买东西。小张过元旦发了100元的购物券,他要买香皂(5元),牙刷(2元),洗发水(20元)。要想把100元正好花完,如何买这三样东西?

 

 

 

4.百鸡百钱。有100文钱,要买100只鸡回家。公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只。如何买?  百马百石。有100石粮食,母匹大马驮2石,每匹中马驮1石,每两匹小马驹一起驮1石。要用100匹马驮完100石粮食,如何按排?

 

 

 

5.某侦察队接到一项紧急任务,要求在ABCDEF六个队员中尽可能多地挑若干人,但有以下限制条件: AB两人中至少去一人;    a+b>=1 AD不能一起去;       a+d<=1 AEF三人中要派两人去;   a+e+f==2 BC都去或都不去;      b+c!=1 CD两人中去一个;      c+d==1 D不去,则E也不去。     d+e==0||d==1 问应当让哪几个人去? 6.123()45()67()8()9=100;要求在()里面填写+-使等式成立。

 

 

 

 

 

 

 

 

迭代

 

//兔子生兔子   

class Class5   wpsDF60.tmp 

{       

static void Main(string[] args)     

   {          

    int tu1 = 1, tu2 = 1; //tu1是倒数第一个月的兔子数,tu2是倒数第二个月的兔子数        

    int tu=0;//要求的这个月的兔子数。

            for (int i = 3; i <= 24; i++)         

   {                 tu = tu1 + tu2;              

                      tu2 = tu1;           

                      tu1 = tu;                        

     }          

  Console.WriteLine(tu);     

   }  

  }

 

 

//求年龄:有6个小孩子排在一起,问第一个多大年龄,他说比第二个小2岁,问第二个多大年龄,他说比第三个小2岁,以此类推,问第6个多大年龄,他说自己16岁。问第一个小孩子几岁?wpsDF61.tmp
    class Class2
    {
        static void Main(string[] args)
        {
            int age = 16; //初始情况下,存的是第6个小孩子年龄,每次循环都会减2,分别代表第54321个小孩子的年龄。
            for (int i = 5; i >= 1; i--)
            {
                age = age - 2;
            }
            Console.WriteLine(age);
        }
    }
}

 

  //猴子吃桃子。
    //公园里有一只猴子,和一堆桃子。猴子每天吃掉桃子数量的一半,把剩下的一半数量中扔掉一个坏的。到了第7天猴了睁开眼发现只剩下一个桃子了,问原来有多。
    //190 wpsDF72.tmp
    class Class4
    {
        static void Main(string[] args)
        {
            int count = 1;
            for(int i=6;i>=1;i--)
            {
                count = (count + 1) * 2;
            }
            Console.WriteLine(count);
        }
    }
}

 

 

穷举

2.有三种硬币若干:1分,2分,5分。要组合15,有哪些组合方式?

 wpsDF92.tmp

static void Main(string[] args)
        {
            for(int a=0;a<=15;a++) //a代表1分的硬币个数
            {
                for(int b=0;b<=7;b++)//b代表2分的硬币个数
                {
                    for(int c=0;c<=3;c++)//c代表5分硬币的个数
                    {
                        if(a*1+b*2+c*5 == 15)
                        {
                            Console.WriteLine("1分硬币需要"+a+"个,2分的硬币需要"+b+"个,5分的硬币需要"+c+"");
                        }
                    }
                }
            }
        }
    }
}

 

 

 //1. 求前100个数的和

 

class Program

    {

             static void Main(string[] args)

        {

            int sum = 0;

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

            {

                sum = sum + i;

            }

            Console.WriteLine(sum);

        }

}

 

 

//4猴子吃桃子。

    //公园里有一只猴子,和一堆桃子。猴子每天吃掉桃子数量的一半,把剩下的一半数量中扔掉一个坏的。到了第7天猴了睁开眼发现只剩下一个桃子了,问原来有多。

//190

wpsDFA3.tmp 

    class Class4

    {

        static void Main(string[] args)

        {

            int count = 1;

            for(int i=6;i>=1;i--)

            {

                count = (count + 1) * 2;

            }

            Console.WriteLine(count);

        }

    }

 

 

 

//5一张纸的厚度是0.15毫米,假设这张纸足够大,可以无限次对折,问折多少次能超过珠峰的高度?

    //一张纸的厚度是0.15毫米,假设这张纸足够大,可以无限次对折,折50次高度是多少?

    class Class3

    {

        static void Main(string[] args)

        {

            double h = 0.00015;//毫米转换成米

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

            {

                h = h * 2;

            }

            Console.WriteLine(h);

        }

    }

 

 

6某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:

A和B两人中至少去一人;a+b>=1

A和D不能一起去;a+d<=1

A、E和F三人中要派两人去;a+e+f==2

B和C都去或都不去;b+c!=1

C和D两人中去一个;c+d==1

若D不去,则E也不去。d+e==0||d==1

问应当让哪几个人去?

 class Class7

    {

        static void Main(string[] args)

        {

            for(int a=0;a<=1;a++)

            {

                for(int b=0;b<=1;b++)

                {

                    for(int c=0;c<=1;c++)

                    {

                        for(int d=0;d<=1;d++)

                        {

                            for(int e=0;e<=1;e++)

                            {

                                for(int f=0;f<=1;f++)

                                {

 if (a + b >= 1 && a + d <= 1 && a + e + f == 2 && b + c != 1 && c + d == 1 && (d + e == 0 || d == 1))

     {

                                        Console.WriteLine("A="+a+";B="+b+";C="+c+";D="+d+";E="+e+";F="+f);

                                    }

                                }

                            }

                        }

                    }

                }

            }

        }

    }

 

原文地址:https://www.cnblogs.com/981971554nb/p/4309723.html