• UVA10891 Game of Sum


    题意:两个人A,B玩游戏,轮流玩,A 先取,每个人每次只准在右边或左边拿1个或多个数,每个人都采取最优策略尽量让自己的得分高

    问A-B的最大值

    View Code
    // File Name: 10891.cpp
    // Author: zlbing
    // Created Time: 2013/1/23 17:46:22
    
    #include<iostream>
    #include<string>
    #include<algorithm>
    #include<cstdlib>
    #include<cstdio>
    #include<set>
    #include<map>
    #include<vector>
    #include<cstring>
    #include<stack>
    using namespace std;
    #define MAXN 105
    int A[MAXN];
    int S[MAXN];
    bool vis[MAXN][MAXN];
    int d[MAXN][MAXN];
    int dp(int i,int j)
    {
        if(vis[i][j])return d[i][j];
        vis[i][j]=true;
        int ans=0;
        for(int k=i+1;k<=j;k++)
            ans=min(dp(k,j),ans);
        for(int k=i;k<j;k++)
            ans=min(dp(i,k),ans);
        d[i][j]=S[j]-S[i-1]-ans;
        return d[i][j];
    }
    int main(){
        int n;
        while(~scanf("%d",&n))
        {
            if(!n)break;
            S[0]=0;
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&A[i]);
                S[i]=S[i-1]+A[i];
            }    
            memset(vis,false,sizeof(vis));
            int k=dp(1,n);
            printf("%d\n",2*k-S[n]);
        }
        return 0;
    }
  • 相关阅读:
    函数如何命名
    jsp/servlet
    hibernate主键生成策略
    Java项目经验(ssh)
    jvm的内存区划分
    @Override
    Java成长简介(转载)
    接口 转载
    SpringBoot项目jar、war方式的部署
    服务注册与发现及其优雅停服
  • 原文地址:https://www.cnblogs.com/arbitrary/p/2873658.html
Copyright © 2020-2023  润新知