如果给我们带号码垫的手机
9 8 7
6 5 4
3 2 1
* 0#
和一个数字n,然后我们可以在键盘上键入多少个n位数字,我们不能从先前选择的数字对角移动,即如果我们输入9则下一个我可以选择的是8或6 。同样数字082将被计为2位数而不是3位数。
样本测试用例
输入n = 1输出= 9
输入n = 2输出= 25
我无法为它制定动态编程/回溯解决方案。
答案 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.将所有这些新元素添加到新列表中并将其返回。