LeetCodeの質問-一列に並んだコイン



Leetcode Question Coins Line



一列にn枚のコインがあります。コインがなくなるまで、2人のプレーヤーが交代でラインの端の1つからコインを取ります。金額の多い方が勝ちです。あなたが最初に行くと仮定して、あなたが勝つことができる最大の金額を計算するためのアルゴリズムを説明してください。

タイトルの意味:



異なる金種のコインの列、そしてコインの列の両端から選択し、2人が選択します。どちらが最大の金種のコインを取得します。






int maxMoney(int A []、int N){
int P [MAX_N] [MAX_N] = {0}
int a、b、c
for(int i = 0ifor(int m = 0、n = inassert(ma =((m + 2<=N-1)?P[m+2][n]:0)
b =((m + 1 = 0)?P [m + 1] [n-1]:0)
c =(n-2> = 0)?P [m] [n-2]:0
P [m] [n] = max(A [m] + min(a、b)、A [n] + min(b、c))
}
}
P [0] [N-1]を返します
}