Mercurial > lbo > hg > juliaplay
changeset 6:661876a2502e
py: dp
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Sun, 19 Feb 2023 12:50:44 +0100 |
parents | 1ae2e0c2ea18 |
children | 1ecfe01af17e |
files | python/dp.py |
diffstat | 1 files changed, 44 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python/dp.py Sun Feb 19 12:50:44 2023 +0100 @@ -0,0 +1,44 @@ + +from functools import cache + + +@cache +def number_of_binary_trees(n): + if n == 0: + return 1 + elif n == 1: + return 1 + else: + N = 0 + for i in range(0, n): + N += number_of_binary_trees(i) * number_of_binary_trees(n-i-1) + return N + +@cache +def number_of_full_binary_trees(n): + if n <= 1: + return 1 + elif n%2 == 0: + return 0 + else: + N = 0 + # Only odd numbers possible. + for nleft in range(1, n, 2): + nright = n-1-nleft + N += number_of_full_binary_trees(nleft) * number_of_full_binary_trees(nright) + return N + +@cache +def circle_chords(n): + if n <= 1: + return 0 + elif n == 2: + return 1 + else: + N = 0 + for i in range(0, n): + for j in range(i+1, n): + left = j - i - 1 + right = n - 2 - left + N += 1 + circle_chords(left) * circle_chords(right) + return N