3106: [cqoi2013]棋盘游戏

链接

分析:

  极大极小搜索 + 记忆化。

代码

 #include<bits/stdc++.h>
using namespace std;
typedef long long LL; const int INF = 1e9;
int f[][][][][][];
int dx[] = {,,,-,,,,-};
int dy[] = {,-,,,,-,,};
int n; int Minimax(int player,int step,int a,int b,int c,int d) {
if (step > n*) return INF;
if (a==c && b==d) {
if (player) return INF;
return ;
}
if (f[player][step][a][b][c][d]) return f[player][step][a][b][c][d];
int res = ,x = ,y = ;
if (player) { // 黑棋走
res = INF;
for (int i=; i<; ++i) {
x = c + dx[i], y = d + dy[i];
if (x>= && x<=n && y>= && y<=n) res = min(res,Minimax(player^,step+,a,b,x,y));
}
}
else { // 白棋走
for (int i=; i<; ++i) {
x = a + dx[i], y = b + dy[i];
if (x>= && x<=n && y>= && y<=n) res = max(res,Minimax(player^,step+,x,y,c,d));
}
}
res ++;
f[player][step][a][b][c][d] = res;
return res;
} int main() {
int a,b,c,d;
cin >> n >> a >> b >> c >> d;
if (abs(a-c)+abs(b-d) == ) puts("WHITE 1"); // 白子一步吃掉黑子
else printf("BLACK %d",Minimax(,,a,b,c,d));
return ;
}

最新文章

  1. C#输出文本树形层次,前或者后自定义空格位数
  2. Asp.Net MVC4 + Oracle + EasyUI 学习 第一章
  3. Bootstrap 3 Datepicker 使用过程
  4. sgu 101 无向图有双重边的欧拉路径
  5. IOS 高级开发 KVC(一)
  6. cpu亲和力总结taskset和setcpu及其他相关
  7. App Store评论优化,让你的APP评论上涨
  8. Python安装及IDE激活
  9. 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()
  10. 离线安装 Android 4.0 SDK
  11. 【转】简明 Vim 练级攻略
  12. Vasya and Multisets CodeForces - 1051C(英语限制了我的想象力)
  13. Java编程思想中关于闭包的一个例子
  14. (转)WebSphere 中池资源调优 - 线程池、连接池和 ORB
  15. shell中的字符串操作和数学运算
  16. C#多线程编程系列(一)- 简介
  17. 可用的rtmp卫视直播地址
  18. Python—numpy.flatnonzero()
  19. 四种launchMode
  20. Oracle常见的33个等待事件

热门文章

  1. Django运行SQL语句
  2. IOS VLC (第三方音频)的使用
  3. 【安卓】imageView.scaleType取centerCrop后,再用padding时显示异常?
  4. Vue.js系列之vue-resource(6)
  5. Javascript中==和===的区别
  6. context.RewritePath
  7. C# File流操作
  8. C#解析HTML神器 Html Agility Pack
  9. JS JavaScript闭包和作用域
  10. SpringBoot非官方教程 | 第四篇:SpringBoot 整合JPA