• 爬楼梯问题迭代算法解!


     有一段楼梯有10级台阶,规定每一步只能跨一级或两级或三级,要登上第10级台阶有几种不同的走法?

     思路:

    0节楼梯: 1  (0

    1节楼梯: 1  (1)

    2节楼梯: 2  (11、 2)

    3节楼梯: 4  (111、     12、   21、   3)

    4节楼梯: 7  (1111、   121、  211、 31、

                        13、

                        112、    22 )

       7=4+2+1

       4=2+1+1

       2=1+1+0

       1=1+0+0

    抽象f(n)=f(n-3)+f(n-2)+f(n-1)

           


            /// <summary>
            /// n为阶梯数
            /// </summary>
            /// <param name="n"></param>
            /// <returns>z 为走法数</returns>
           static long fib3(int n)
            {

                long x = 0, y = 0,z=1;
                long w, k;

                for (int j = 0; j < n; j++)
                {

                    w = z;
                    k = y;
                    z = x + y + z;
                    y = w;
                    x = k;
                    
                    
                }

                return z;

            }

            static void Main(string[] args)
            {
                for (int i = 1; i <= 10; i++)
                {
                    Console.WriteLine(fib3(i));
                }
                Console.Read();
            }

        }

    迭代法性能

     

    递归法性能 

     


            /// <summary>
            /// 递归算法
            /// </summary>
            /// <param name="n"></param>
            /// <returns></returns>
            static long dfib1(int n)
            {
                if (n < 1)
                { return 0; }

                if (n == 1)
                    return 1;
                if (n == 2)
                    return 2;
                if (n == 3)
                    return 4;

                
                

                return dfib1(n - 1) + dfib1(n - 2) + dfib1(n-3);

               

            } 

     

  • 相关阅读:
    0625jQuery练习:权限基础1:查询员工对应角色、修改员工对应角色
    0624jQuery练习:三级联动—时间
    0622jQuery基础:常用属性
    0621jQuery基础:基础属性
    0621jQuery练习:三级联动
    0621jQuery练习:弹窗
    0621jQuery基础:事件
    数据库连接-登录
    javaScript中的DOM操作及数组的使用
    设置日期对象(年-月-日 时-分-秒)实现菱形的拼接
  • 原文地址:https://www.cnblogs.com/zlddtt/p/1708273.html
Copyright © 2020-2023  润新知