zoukankan      html  css  js  c++  java
  • [Leetcode]Unique Binary Search Trees

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n?

    简单动态规划。判别每个左右子树各有多少种情况,然后相乘就可以了,而且是BST,注意这条件就可以解了。它的状态转移方程为:

            for j<i:

          a[i]+ = a[j-1]*a[n-j]

     1 class Solution {
     2 public:
     3     int numTrees(int n) {
     4         int A[n];A[0]=1;
     5         for(int i=1;i!=n+1;i++){
     6             A[i] = 0;
     7             if(i<3)
     8                 A[i]=i;
     9             else{
    10                 for(int j=1;j!=i+1;j++)
    11                     A[i]+=A[j-1]*A[i-j];
    12             }
    13         }
    14         return A[n];
    15     }
    16 };

    你问我有没有更快的解,我会告诉你当然有啦,我们把状态转移方程展开来:

    a[i] = a[0]a[i-1]+a[1]a[i-2]+……+a[i-1]a[0];

    看出来了吧,这个式子就是卡特兰数的递推式,所以直接带结果就可以了。(但是会溢出。。。笑)

  • 相关阅读:
    mybatis2入门程序
    mybatis1
    mybeats与jdbc问题分析
    mysqljdbc简单连接释放
    jdbc问题记录
    section,article,div
    HB调试前端开发移动
    HTML,XML,XHTML
    访问地图
    OAuth
  • 原文地址:https://www.cnblogs.com/desp/p/4334062.html
Copyright © 2011-2022 走看看