題目描述
創(chuàng)新互聯(lián)公司的客戶來自各行各業(yè),為了共同目標(biāo),我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領(lǐng)域包括成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。
平衡二叉樹(AVL樹),是指左右子樹高度差至多為1的二叉樹,并且該樹的左右兩個子樹也均為AVL樹。 現(xiàn)在問題來了,給定AVL樹的節(jié)點(diǎn)個數(shù)n,求有多少種形態(tài)的AVL樹恰好有n個節(jié)點(diǎn)。
輸入描述
一行一個整數(shù)T(T≤2000)表示數(shù)據(jù)組數(shù)
T行, 每行一個整數(shù)n(n≤2000)
輸出描述
每行一個數(shù)字表示結(jié)果,由于結(jié)果巨大,輸出它對109+7取余數(shù)的結(jié)果。
輸入樣例
1
10
輸出樣例
60
分析:
一棵樹是平衡二叉樹,其左子樹有子樹滿足同樣性質(zhì)。
性質(zhì):左右子樹的高度差最多為1
則我們可以推導(dǎo)出樹與他的左右子樹的關(guān)系。
設(shè)dp[i][j]
表示有i個節(jié)點(diǎn),高度為j時(shí)候的方案數(shù)。
顯然當(dāng)0個結(jié)點(diǎn)時(shí),算一個方案,只有一個節(jié)點(diǎn)時(shí)也算一個方案。
即dp[0][0]
=dp[1][1]
= 1
狀態(tài)轉(zhuǎn)移方程課表示為如下:
左右子樹同樣高:dp[i][j]
=dp[L][j - 1]
+dp[R][j - 1]
左子樹高右子樹低:dp[i][j]
=dp[L][j - 1]
+dp[R][j - 2]
左子樹低右子樹高:dp[i][j]
=dp[L][j - 2]
+dp[R][j - 1]
其中節(jié)點(diǎn)的關(guān)系應(yīng)該為i = L + R + 1
代碼:
#includeusing namespace std;
const int N = 2010, mod = 1e9 + 7;
int n;
int dp[N][N];
int main()
{dp[0][0] = dp[1][1] = 1;
for (int i = 2; i<= 2000; i ++ )
{for (int j = 2; j<= 20; j ++ )
{ for (int l = 0; l< i; l ++ )
{ int r = i - 1 - l;
dp[i][j] = (dp[i][j] + (long long)dp[l][j - 1] * dp[r][j - 1] % mod) % mod;
dp[i][j] = (dp[i][j] + (long long)dp[l][j - 2] * dp[r][j - 1] % mod) % mod;
dp[i][j] = (dp[i][j] + (long long)dp[l][j - 1] * dp[r][j - 2] % mod) % mod;
}
}
}
// for (int i = 0; i<= 20; i ++ )
// {// for (int j = 0; j<= 15; j ++ )
// printf("cnt = %d, h = %d, val = %d\n", i, j,dp[i][j]);
// }
int t;
cin >>t;
while (t -- )
{scanf("%d", &n);
int ans = 0;
for (int i = 0; i<= 20; i ++ )
ans = (ans + dp[n][i]) % mod;
printf("%d\n", ans);
}
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
標(biāo)題名稱:[代碼元]平衡二叉樹-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://jinyejixie.com/article32/dpdosc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、移動網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、域名注冊、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容