https://leetcode.com/problems/fair-distribution-of-cookies/
回溯的题目,好久没有被卡住过,稳扎稳打啊,不要浮躁,这里就记一下一个没有优化的答案,提醒自己,一些题目本身自己应该会的。
个人解答
func distributeCookies(a []int, k int) int {
curr := make([]int, k) // 每个人当前的分配情况
res := 1000000
var backtrack func(i int)
backtrack = func(i int) {
if i == len(a) {
max := 0
for _, x := range(curr) {
if x > max {
max = x
}
}
if max < res {
res = max
}
return
}
for j := 0; j < len(curr); j++ {
curr[j] += a[i]
backtrack(i + 1)
curr[j] -= a[i]
}
}
backtrack(0)
return res
}
题目分析
没什么好说的,就是一个标准回溯题的模板,复杂度就是O(m^k),也不想什么花里胡哨的优化了,先把最基本的写出来再说吧。
第一次用Go记录自己做的题目,不想Python这样的,Go语言没有很多现成的函数,或许是时候回归根本,编程的能力体现在解决问题的能力上,而不在一些现有工具的使用上。