移动数字键盘中有多少个n位数字

时间:2013-12-12 04:37:59

标签: dynamic-programming backtracking

如果给我们带号码垫的手机      
9 8 7      
6 5 4      
3 2 1      
* 0#

和一个数字n,然后我们可以在键盘上键入多少个n位数字,我们不能从先前选择的数字对角移动,即如果我们输入9则下一个我可以选择的是8或6 。同样数字082将被计为2位数而不是3位数。

样本测试用例
输入n = 1输出= 9
输入n = 2输出= 25

我无法为它制定动态编程/回溯解决方案。

1 个答案:

答案 0 :(得分:0)

f(n)成为由n个数字组成的所有序列的列表。

  • 基本情况很简单:f(1) = [ 1, 2, ..., 9 ]
  • 在一般情况下,如何从f(n)计算f(n-1)?只需循环遍历f(n-1)的元素并检查最后一位数字。假设f(2)包含85,则f(3)应包含852,854 856和858.将所有这些新元素添加到新列表中并将其返回。