LeetCode之Unique Binary Search Trees

来源:互联网 发布:美化状态栏的软件 编辑:程序博客网 时间:2024/05/21 19:45
/*动态规划。参考自:https://github.com/soulmachine/leetcode设dp[n]表示n个没有重复的数组组成的二叉搜索数的数目。易知,以某个数字i为根节点的二叉树数目为其左子树数目乘以右子树数目。所以有dp[n] = sum(dp[i]*dp[n-1-i]),其中(i = 0,1,2...n-1)。*/class Solution {public:    int numTrees(int n) {        vector<int> dp(n+1, 0);        dp[0] = dp[1] = 1;        for(int i = 2; i < n+1; ++i){            for(int j = 0; j < i; ++j){                dp[i] += dp[j]*dp[i-1-j];            }        }        return dp[n];    }};

0 0
原创粉丝点击