| 12345678910111213141516171819202122232425262728293031323334 | func getMoneyAmount(n int) int {	dp := make([][]int, n+1)	for i := 1; i <= n; i++ {		dp[i] = make([]int, n+1)	}	return search(dp, 1, n)}func search(dp [][]int, beg, end int) int {	if end <= beg {		return 0	}	if dp[beg][end] != 0 {		return dp[beg][end]	}	dp[beg][end] = 1<<32 - 1	for i := beg; i <= end; i++ {		left := search(dp, beg, i-1)		right := search(dp, i+1, end)		min := i + maxInt(left, right) // Prepare for the worst, but do your best		if min < dp[beg][end] {			dp[beg][end] = min		}	}	return dp[beg][end]}func maxInt(x, y int) int {	if x < y {		return y	}	return x}
 |