https://leetcode.com/problems/fair-distribution-of-cookies/
回溯的题目,好久没有被卡住过,稳扎稳打啊,不要浮躁,这里就记一下一个没有优化的答案,提醒自己,一些题目本身自己应该会的。

个人解答

  1. func distributeCookies(a []int, k int) int {
  2. curr := make([]int, k) // 每个人当前的分配情况
  3. res := 1000000
  4. var backtrack func(i int)
  5. backtrack = func(i int) {
  6. if i == len(a) {
  7. max := 0
  8. for _, x := range(curr) {
  9. if x > max {
  10. max = x
  11. }
  12. }
  13. if max < res {
  14. res = max
  15. }
  16. return
  17. }
  18. for j := 0; j < len(curr); j++ {
  19. curr[j] += a[i]
  20. backtrack(i + 1)
  21. curr[j] -= a[i]
  22. }
  23. }
  24. backtrack(0)
  25. return res
  26. }

题目分析

没什么好说的,就是一个标准回溯题的模板,复杂度就是O(m^k),也不想什么花里胡哨的优化了,先把最基本的写出来再说吧。

第一次用Go记录自己做的题目,不想Python这样的,Go语言没有很多现成的函数,或许是时候回归根本,编程的能力体现在解决问题的能力上,而不在一些现有工具的使用上。