每次用一个点跟其他点连接,然后就出出现两个前面解决过的子问题,比如说:
F(6) = F(4)*F(0) + F(2)*F(2) + F(4)*F(0)
F(8) = F(6)*F(0) + F(4)*F(2) + F(2)*F(4) + F(0)*F(6)
import sys
def main():
n = int(sys.stdin.readline().strip())
a = [0 for i in range(1000+2)]
a[0] = 1
a[2] = 1
a[4] = 2
if n == 2 or n == 4:
return a[n]
for i in range(6, n+1):
if i % 2 != 0:
continue
res = 0
total = i - 2
temp = i - 2
while temp >= 0:
l = temp
r = total - l
res = (res + ((a[l]%1000000007)* (a[r]%1000000007))%1000000007)%1000000007
temp -= 2
a[i] = res
return a[n]
print(main())