全台最大網路博奕遊戲論壇
標題:
經典區間 DP & 經典博弈遊戲
[打印本頁]
作者:
admin
時間:
2023-10-16 16:42
標題:
經典區間 DP & 經典博弈遊戲
這是 L
日本藤素
,eetCode 上的
「877. 石子遊戲」
,難度為
「中等」
。
Tag : 「區間 DP」、「博弈论」
亚历克斯和李用几堆石子在做遊戲。偶数堆石子排成一行,每堆都有正整数颗石子 piles
。
遊戲以谁手中的石子至多来决出输赢。石子的总数是奇数,以是没有平手。
亚历克斯和李轮番举行,亚历克斯先起頭。 每回合,玩家從行的@起%Zy9s6%頭或竣%87rV7%事@處取走整堆石頭。 這類环境一向延续到没有更多的石子堆為止,此時手中石子至多的玩家获胜。
假如亚历克斯和李都阐扬出最好程度,当亚历克斯博得角逐時返回 true ,
太陽能LED感應燈
,当李博得角逐時返回 false 。
示例:
输入:[5,3,4,5]
输出:true
诠释:
亚历克斯先起頭,只能拿前 5 颗或後 5 颗石子 。
假如他取了前 5 颗,這一行就酿成了 [3,4,5] 。
若是李拿走前 3 颗,那末剩下的是 [4,5],亚历克斯拿走後 5 颗博得 10 分。
若是李拿走後 5 颗,那末剩下的是 [3,4],亚历克斯拿走後 4 颗博得 9 分。
這表白,取前 5 颗石子對亚历克斯来讲是一個成功的行為,以是咱們返回 true 。
複製代碼
「界说
f[l][r]為斟酌區間
[l,r],在两邊都做最佳選擇的环境下,先手與背工的最大得分差值為几多。」
那末 f[1][n]為斟酌所有石子,先手與背工的得分差值:
piles[r - 1] - f[l][r - 1] \\
两邊都想赢,城市做最优决议计划(即便本身與對方分差最大)。是以 f[l][r]為上述两种环境中的最大值。
按照状况转移方程,咱們發明大區間的状况值依靠于小區間的状况值,典范的區間 DP 問题。
依
台灣運彩官網
,照從小到大「罗列區間长度」和「區間左端點」的通例做法举行求解便可。
代码:
class Solution {
public boolean stoneGame(int[] ps) {
int n = ps.length;
int[][] f = new int[n + 2][n + 2];
for (int len = 1; len <= n; len++) { // 罗列區間长度
for (int l = 1; l + len - 1 <= n; l++) { // 罗列左端點
支票借錢, int r = l + len - 1; // 计较右端點
西梅荷葉汁, int a = ps[l - 1] - f[l + 1][r];
int b = ps[r - 1] - f[l][r - 1];
f[l][r] = Math.max(a, b);
}
}
return f[1][n] > 0;
}
}
複製代碼
究竟上,這仍是一道很經典的博弈论問题,也是最简略的一類博弈论問题。
為了便利,咱們称「石子序列」為石子在原排序中的编号,下标從 1起頭。
因為石子的堆数為偶数,且只能從两頭取石子。
「是以先手背工所能選擇的石子序列,彻底取决于先手每次决议。」
因為石子的堆数為偶数,對付先手而言:
「每次的决议计划場合排場,都能「自由地」選擇奇数仍是偶数的序列,從而限定背工下一次「只能」奇数仍是偶数石子。」
详细的,對付本题,
「因為石子堆数為偶数,是以先手的最起頭場合排場必定是
[奇数, 偶数],即必定是「奇偶性分歧的場合排場」;当先手决议计划完以後,交到给背工的要末是
[奇数,奇数]或
[偶数,偶数],即必定是「奇偶性不异的場合排場」;背工决议计划完後,又規复「奇偶性分歧的場合排場」交回到先手」
...
不難归纳推理,這個鸿沟是可以利用到每個回合。
「是以先手只必要在举行第一次操作前计较原序列中「奇数总和」和「偶数总和」哪一個大,然後每次决议计划都「限定」對方只能選擇「最优奇偶性序列」的對峙面便可。」
同時又因為所有石子总和為奇数,堆数為偶数,即没有平手,以是先手必胜。
代码:
class Solution {
pu抗皺眼霜,blic boolean stoneGame(int[] piles) {
return true;
}
}
複製代碼
這是咱們「刷穿 LeetCode」系列文章的第 No.877 篇,系列起頭于 2021/01/01,截止于肇端日 LeetCode 上共有 1916 道标题,部門是有锁题,咱們将先将所有不带锁的标题刷完。
在這個系列文章内里,除讲授解题思绪之外,還會尽量给出最為简便的代码。若是触及通解還會响應的代码模板。
為了便利列位同窗可以或许電脑长進行調试和提交接码,我創建了相干的堆栈: 。
在堆栈地點里,你可以看到系列文章的题解链接、系列文章的响應代码、LeetCode 原题链接和其他优選题解。
歡迎光臨 全台最大網路博奕遊戲論壇 (https://bbs.my-3win8.com/)
Powered by Discuz! X3.3