1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-10 18:48:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/吃掉所有兵需要的最多移动次数 [maximum-number-of-moves-to-kill-all-pawns].html
2024-09-19 09:27:23 +08:00

79 lines
4.4 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>给你一个&nbsp;<code>50 x 50</code>&nbsp;的国际象棋棋盘,棋盘上有 <strong>一个</strong>&nbsp;马和一些兵。给你两个整数&nbsp;<code>kx</code>&nbsp;<code>ky</code>&nbsp;,其中&nbsp;<code>(kx, ky)</code>&nbsp;表示马所在的位置,同时还有一个二维数组&nbsp;<code>positions</code>&nbsp;,其中&nbsp;<code>positions[i] = [x<sub>i</sub>, y<sub>i</sub>]</code>&nbsp;表示第 <code>i</code>&nbsp;个兵在棋盘上的位置。</p>
<p>Alice 和 Bob 玩一个回合制游戏Alice 先手。玩家的一次操作中,可以执行以下操作:</p>
<ul>
<li>玩家选择一个仍然在棋盘上的兵,然后移动马,通过 <strong>最少</strong>&nbsp;<strong>步数</strong> 吃掉这个兵。<strong>注意</strong>&nbsp;,玩家可以选择&nbsp;<strong>任意</strong>&nbsp;一个兵,<strong>不一定</strong>&nbsp;要选择从马的位置出发&nbsp;<strong>最少</strong>&nbsp;移动步数的兵。</li>
<li><span>在马吃兵的过程中,马 <strong>可能</strong>&nbsp;会经过一些其他兵的位置,但这些兵 <strong>不会</strong>&nbsp;被吃掉。<strong>只有</strong>&nbsp;选中的兵在这个回合中被吃掉。</span></li>
</ul>
<p>Alice 的目标是 <strong>最大化</strong>&nbsp;两名玩家的 <strong></strong>&nbsp;移动次数,直到棋盘上不再存在兵,而 Bob 的目标是 <strong>最小化</strong>&nbsp;总移动次数。</p>
<p>假设两名玩家都采用 <strong>最优</strong>&nbsp;策略,请你返回可以达到的 <strong>最大</strong>&nbsp;总移动次数。</p>
<p>在一次&nbsp;<strong>移动</strong>&nbsp;中,如下图所示,马有 8 个可以移动到的位置,每个移动位置都是沿着坐标轴的一个方向前进 2 格,然后沿着垂直的方向前进 1 格。</p>
<p><img src="https://assets.leetcode.com/uploads/2024/08/01/chess_knight.jpg" style="width: 275px; height: 273px;" /></p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>kx = 1, ky = 1, positions = [[0,0]]</span></p>
<p><span class="example-io"><b>输出:</b>4</span></p>
<p><strong>解释:</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2024/08/16/gif3.gif" style="width: 275px; height: 275px;" /></p>
<p>马需要移动 4 步吃掉&nbsp;<code>(0, 0)</code>&nbsp;处的兵。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>kx = 0, ky = 2, positions = [[1,1],[2,2],[3,3]]</span></p>
<p><span class="example-io"><b>输出:</b>8</span></p>
<p><strong>解释:</strong></p>
<p><strong><img alt="" src="https://assets.leetcode.com/uploads/2024/08/16/gif4.gif" style="width: 320px; height: 320px;" /></strong></p>
<ul>
<li>Alice 选择&nbsp;<code>(2, 2)</code>&nbsp;处的兵,移动马吃掉它需要 2 步:<code>(0, 2) -&gt; (1, 4) -&gt; (2, 2)</code>&nbsp;</li>
<li>Bob 选择&nbsp;<code>(3, 3)</code>&nbsp;处的兵,移动马吃掉它需要 2 步:<code>(2, 2) -&gt; (4, 1) -&gt; (3, 3)</code>&nbsp;</li>
<li>Alice 选择&nbsp;<code>(1, 1)</code>&nbsp;处的兵,移动马吃掉它需要 4 步:<code>(3, 3) -&gt; (4, 1) -&gt; (2, 2) -&gt; (0, 3) -&gt; (1, 1)</code>&nbsp;</li>
</ul>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>kx = 0, ky = 0, positions = [[1,2],[2,4]]</span></p>
<p><span class="example-io"><b>输出:</b>3</span></p>
<p><strong>解释:</strong></p>
<ul>
<li>Alice 选择&nbsp;<code>(2, 4)</code>&nbsp;处的兵,移动马吃掉它需要 2 步:<code>(0, 0) -&gt; (1, 2) -&gt; (2, 4)</code>&nbsp;。注意,<code>(1, 2)</code>&nbsp;处的兵不会被吃掉。</li>
<li>Bob 选择&nbsp;<code>(1, 2)</code>&nbsp;处的兵,移动马吃掉它需要 1 步:<code>(2, 4) -&gt; (1, 2)</code>&nbsp;</li>
</ul>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>0 &lt;= kx, ky &lt;= 49</code></li>
<li><code>1 &lt;= positions.length &lt;= 15</code></li>
<li><code>positions[i].length == 2</code></li>
<li><code>0 &lt;= positions[i][0], positions[i][1] &lt;= 49</code></li>
<li><code>positions[i]</code>&nbsp;两两互不相同。</li>
<li>输入保证对于所有&nbsp;<code>0 &lt;= i &lt; positions.length</code>&nbsp;,都有&nbsp;<code>positions[i] != [kx, ky]</code>&nbsp;</li>
</ul>