首页 > 代码库 > 12月24日笔记

12月24日笔记

 一、迭代法:有一定的规律(s=s+n//s+=n)

每次循环都是从上次运算结果中获得数据,本次运算的结果都是要为下次运算作准备。

例:

1.100以内所有数之和

2.求阶乘

3.求年龄

4.折纸

5.棋盘放粮食

6.猴子吃桃子

7.落球问题:一个球从10米高度落下,每次弹起2/3的高度,问第五次弹起后的高度是多少?

8.兔子生兔子的问题

  一对新生兔,到第三个月开始生小兔,以后每个月都会生一对小兔,小兔不断的长大也会生小兔,假设兔子不会死,每一次只能生一对(公母)。问第24个月末能生多少只兔子。

 

 

**int 是32的位的,有时计算的数太大会超出范围,运算结果会显示是0,这时换成double计算试试。

 

二、穷举法

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

1.找100以内与7有关的数

  for (int a = 1; a <= 100;a++ )
            {
                if(a%7==0||a/10==7||a%10==7)
                {
                    Console.WriteLine("100以内与7有关的数是"+a);
                }
            }       

2.硬币有1分、2分、5分的若干个,要组合出一毛五,有哪些组合方式

 for (int a = 1; a <= 15;a++ )
            {
                for (int b = 1; b <= 7;b++ )
                {
                    for (int c = 1; c <= 3;c++ )
                    {
                        if (a + 2 * b + 5 * c == 15)
                        {
                            Console.WriteLine("需要一分的"+a+"个,两分的"+b+"个,五分的"+c+"个");                       
                        }
                    }
                }
            }

3.买东西。小张有100元购物券,香皂5元,牙刷2元,洗发水20元,如何花完100元。

 for (int a = 0; a <= 20;a++ )
            {
                for (int b = 0; b <= 50; b++)
                {
                    for (int c = 0; c <= 5; c++)
                    {
                        if (5*a+2*b+20*c==100)
                        {
                            Console.WriteLine("香皂"+a+"个,牙刷"+b+"个,洗发水"+c+"个");
                        }
                    }
                }
            }

4,(百鸡百钱)有100文钱,要买100只鸡回家,公鸡2文钱一只,母鸡一文钱一只,小鸡半文钱一只。如何买。

   (百马百石)有100石粮食,每匹大马驮2石,每匹中马驮1石,每两匹小马驮1石,要用100匹马驮完100石粮食如何驮完?

 for (int a = 0; a <= 50; a++)
            {
                for (int b = 0; b <= 100; b++)
                {
                    for (int c = 0; c <= 200; c++)
                    {
                        if (2 * a + b + 0.5 * c == 100)
                        {
                            Console.WriteLine("买公鸡" + a + "只,母鸡" + b + "只,小鸡" + c + "只");
                        }
                    }
                }
            }

5.某侦查队接到一项紧张任务,要求在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

 

6.  123()45()67()8()9=100;要求在()填写+或-使等式成立。

 for (int a = -1; a <= 1;a+=2 )
            {
                for (int b = -1; b <= 1;b+=2 )
                {
                    for (int c = -1; c <= 1; c += 2)
                    {
                        for (int d = -1; d <= 1; d += 2)
                        {
                            if(123+a*45+b*67+c*8+d*9==100)
                            {
                                 Console.WriteLine("A="+a+";B="+b+";C="+c+";D="+d);
                            }
                        }
                    }
                }
            }     
        }

12月24日笔记