洛谷——P2734 游戏 A Game

本文详细解析了P2734游戏AGame的区间动态规划算法,通过双人游戏的背景引入,阐述了如何利用动态规划求解最优策略,实现了从序列两端取数以最大化得分的问题。

P2734 游戏 A Game

 

题目背景

有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的任意一端取一个数,取数后该数字被去掉并累加到本玩家的得分中,当数取尽时,游戏结束。以最终得分多者为胜。

 

 

区间DP,可以从左边拿,也可以从右边拿

转台转移方程:$f[i][j]=c[j]-c[i]-min(f[i][j-1],f[i+1][j])$

#include<cstdio>
#include<iostream>
#include<cstring>

using namespace std;

int n,c[105],f[105][105];

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&c[i]),c[i]+=c[i-1];
    
    for(int k=1;k<=n;k++)
        for(int j,i=1;i+k-1<=n;i++){
            j=i+k-1;
            f[i][j]=c[j]-c[i-1]-min(f[i+1][j],f[i][j-1]);
        }
            
    cout<<f[1][n]<<" "<<c[n]-c[0]-f[1][n];
            
    return 0;
}

 

转载于:https://www.cnblogs.com/song-/p/9679440.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值