递推关系,用DP求解。 例如dp[3]=dp[0]*dp[2]+dp[1]*dp[1]+dp[2]*dp[0]
class Solution {public: int numTrees(int n) { vector<int> dp(1000,0); dp[0]=1; for(int num=1;num<=n;num++) { //dp[num] for(int i=0;i<=(num-1)/2;i++) dp[num]+=dp[i]*dp[num-1-i]*2; if(num%2==1) dp[num]=dp[num]-pow(dp[(num-1)/2],2); } return dp[n]; }};新闻热点
疑难解答