1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-11 02:58:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/骑士拨号器 [knight-dialer].html

53 lines
1.9 KiB
HTML
Raw Normal View History

2022-03-27 20:46:41 +08:00
<p>象棋骑士有一个<strong>独特的移动方式</strong>,它可以垂直移动两个方格,水平移动一个方格,或者水平移动两个方格,垂直移动一个方格(两者都形成一个&nbsp;<strong>L&nbsp;</strong>的形状)。</p>
<p>象棋骑士可能的移动方式如下图所示:</p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2020/08/18/chess.jpg" style="height: 200px; width: 200px;" /></p>
<p>我们有一个象棋骑士和一个电话垫,如下所示,骑士<strong>只能站在一个数字单元格上</strong>(即蓝色单元格)。</p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2020/08/18/phone.jpg" style="height: 200px; width: 150px;" /></p>
<p>给定一个整数 n返回我们可以拨多少个长度为 n 的不同电话号码。</p>
<p>你可以将骑士放置在<strong>任何数字单元格</strong>上,然后你应该执行 n - 1 次移动来获得长度为 n 的号码。所有的跳跃应该是<strong>有效</strong>的骑士跳跃。</p>
<p>因为答案可能很大,<strong>所以输出答案模&nbsp;</strong><code>10<sup>9</sup>&nbsp;+ 7</code>.</p>
<p>&nbsp;</p>
<ul>
</ul>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>n = 1
<strong>输出:</strong>10
<strong>解释:</strong>我们需要拨一个长度为1的数字所以把骑士放在10个单元格中的任何一个数字单元格上都能满足条件。
</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>n = 2
<strong>输出:</strong>20
<strong>解释:</strong>我们可以拨打的所有有效号码为[04, 06, 16, 18, 27, 29, 34, 38, 40, 43, 49, 60, 61, 67, 72, 76, 81, 83, 92, 94]
</pre>
<p><strong>示例 3</strong></p>
<pre>
<strong>输入:</strong>n = 3131
<strong>输出:</strong>136006598
<strong>解释:</strong>注意取模
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n &lt;= 5000</code></li>
</ul>