博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Game of Sum
阅读量:5055 次
发布时间:2019-06-12

本文共 638 字,大约阅读时间需要 2 分钟。

可以知道整体石子的总和一定的,所以一个人的得分越高,另一个人的得分就越低。不管怎么取任意时刻游戏的状态都是原始序列的一段连续子序列(即被玩家取剩下的序列)。

因此,用d(i,j)表示玩家A在i到j部分的最大和,在双方都采取最优策略的情况下,先手得分最大值。

d[i][j] = sum[i][j] - min(dp(i + k, j), dp(i, j - k)); (1 <= k <= j - i + 1)

#include
#include
#include
#include
using namespace std;int S[105], A[105], d[105][105], vis[105][105], n;int dp(int i, int j) { if (vis[i][j]) return d[i][j]; vis[i][j] = 1; int m = 0; for (int k=i+1;k<=j;k++) { m=min(m,dp(k,j)); } for(int k=i;k

  

转载于:https://www.cnblogs.com/shanshuiyouxiangfeng/p/7979676.html

你可能感兴趣的文章
存储开头结尾使用begin tran,rollback tran作用?
查看>>
Activity启动过程中获取组件宽高的五种方式
查看>>
java导出Excel表格简单的方法
查看>>
centos 修改ftp目录
查看>>
SQLite数据库简介
查看>>
利用堆实现堆排序&amp;优先队列
查看>>
Mono源码学习笔记:Console类(四)
查看>>
Android学习路线(十二)Activity生命周期——启动一个Activity
查看>>
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
windows下编译FreeSwitch
查看>>
3.2单变量分析 proc univariate
查看>>
【转载】 C#使用Select方法快速获取List集合集合中某个属性的所有值集合
查看>>
background属性
查看>>
git .gitignore 文件不起作用
查看>>
Vijos 1617 超级教主(单调队列DP)
查看>>
POJ 1364 King(差分约束)
查看>>
20165314 Linux安装及学习
查看>>
Linux - svn 操作
查看>>
Python编写的ssh客户端[类似putty]
查看>>