मान लीजिए कि हमारे पास एक संख्या n है। यदि हमारे पास [1,2,...,n] जैसी संख्याएँ हैं, तो हमें इन n मानों का उपयोग करके संभावित BST की संख्या को गिनना होगा। अगर उत्तर बहुत बड़ा है, तो परिणाम को 10^9+7 से संशोधित करें।
इसलिए, यदि इनपुट n =3 जैसा है, तो आउटपुट 14 होगा,
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे
- a :=मानों वाली एक सूची [0, 1]
- म :=10^9+7
- अधिकतम_एन:=1000
- k के लिए 2 से लेकर max_n + 1 तक, करें
- सम्मिलित करें (सूची के सभी तत्वों का 1 + योग (a[i] * a[k - i] सभी के लिए i रेंज में(1, k))) mod m a के अंत में
- वापसी (a[n + 1] - 1) मॉड m
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(n): a = [0, 1] m = 10**9+7 max_n = 1000 for k in range(2, max_n + 2): a.append((1 + sum(a[i] * a[k - i] for i in range(1, k))) % m) return ((a[n + 1] - 1) % m) n = 3 print(solve(n))
इनपुट
3
आउटपुट
14