| 1234567891011121314151617181920212223242526272829303132333435 | func change(amount int, coins []int) int {	dp := make([]int, amount+1)	dp[0] = 1	for _, c := range coins { // dp[i+c] += dp[i]		for i := 0; i <= amount-c; i++ {			dp[i+c] += dp[i]		}	}	return dp[amount]}type pair struct {	_1 int	_2 int}func changeDFS(amount int, coins []int) int { // Memory search	m := make(map[pair]int)	return dfs(amount, coins, 0, m)}func dfs(amount int, coins []int, i int, m map[pair]int) (sum int) {	if amount == 0 {		return 1	} else if len(coins) == i {		return 0	} else if val, ok := m[pair{amount, i}]; ok {		return val	}	for c := 0; c <= amount; c += coins[i] {		sum += dfs(amount-c, coins, i+1, m)	}	m[pair{amount, i}] = sum	return}
 |