zoukankan      html  css  js  c++  java
  • 卡特兰数

    1 1 2 5 14 42 ...
    n=0 n=1 n=2 n=3 n=4 n=5 ...

    对于卡特兰数:本质上是一个数列,在应用上往往表示对于某个n作为限定条件,其代表了对于的组合情况是多少?

    public class Main {
        public static void main(String[] args) {
            System.out.println(nums_1(6));
           }
    private static int nums_0(int n){ if (n == 0 || n == 1) return 1; int S0 = 1; int S1 = 1; int out= 0; for (int i = 0; i <= n-1; i++) { out+=nums_0(i)*nums_0(n-1-i); } return out; } private static int nums_1(int n){ if (n == 0 || n == 1) return 1; int[] dp = new int[n+1]; dp[0] = 1; dp[1] = 1; for (int i = 2; i <= n; i++) { for (int m = 0; m < i; m++) { dp[i] += dp[m]*dp[i-1-m]; } } return dp[n]; } }

    在这里:动态规划相对于递归的区别是,求解S_n的过程中,先求S_0,而递归是想先求S_n-1,想求二求不得,只有逐层递归求解,直到S_0、S_1,再返回,这将导致占用大量的栈空间,并且因为没

    有对中间求解结果S_k保存,会导致重复求解某个S_k。

  • 相关阅读:
    爬虫介绍
    HTTP请求协议
    谷歌浏览器表单提交,input填充背景
    SVN与GIT基础知识学习
    vue 开发环境搭建
    正则表达式验证
    canvas基础
    数组基础方法应用
    AJAX基础学习
    css弹性布局 --flex布局。
  • 原文地址:https://www.cnblogs.com/iuyy/p/13507678.html
Copyright © 2011-2022 走看看