935. 骑士拨号器

骑士拨号器问题详解:用动态规划计算骑士跳跃电话号码数量

题目描述

象棋中的骑士拥有独特的移动方式:它可以沿着“L”形移动——即先垂直移动两格,再水平移动一格,或先水平移动两格,再垂直移动一格。

在一个电话拨号键盘上,我们将骑士放置在数字单元格(蓝色单元格)上,这些数字为 0 到 9。骑士只能跳跃到数字键盘上能够合法到达的数字单元格。
给定一个整数 nn,我们需要计算能拨打多少个长度为 nn 的不同电话号码。

  • 骑士可以从任何数字开始拨号;
  • 之后执行 n-1 次合法骑士跳跃;
  • 所有跳跃均需满足骑士跳跃规则;
  • 由于答案可能很大,结果需对 10^9+7 取模。

数字键盘布局与骑士跳跃规则

数字键盘布局如下:

1 2 3
4 5 6
7 8 9
  0

骑士跳跃必须符合“L”形规则:

  • 垂直方向跳两格,水平方向跳一格;
  • 或水平方向跳两格,垂直方向跳一格。

例如,数字“1”骑士可跳至“6”和“8”,数字“0”骑士可跳至“4”和“6”。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值