标签: algorithm recursion backtracking
有时候我会发现一个问题而且我不确定我的第一直觉应该是强制所有可能的解决方案+记忆或尝试智能地解决问题。例如,这个问题:
给定正整数n,您可以执行以下操作: 如果n为偶数,则用n / 2替换n。如果n为奇数,则可以用n替换n n + 1或n - 1.最小替换次数是多少 n需要成为1?
给定正整数n,您可以执行以下操作:
如果n为偶数,则用n / 2替换n。如果n为奇数,则可以用n替换n n + 1或n - 1.最小替换次数是多少 n需要成为1?
如何知道不会为任何给定的n尝试每个选项的代码(例如:1 + [func(n+1), func(n-1), func(n/2)].min而不是寻找更智能的解决方案?你怎么知道这种本能?
1 + [func(n+1), func(n-1), func(n/2)].min