3106: [cqoi2013]棋盘游戏
2024-08-22 22:12:25
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 ;
}
最新文章
- C#输出文本树形层次,前或者后自定义空格位数
- Asp.Net MVC4 + Oracle + EasyUI 学习 第一章
- Bootstrap 3 Datepicker 使用过程
- sgu 101 无向图有双重边的欧拉路径
- IOS 高级开发 KVC(一)
- cpu亲和力总结taskset和setcpu及其他相关
- App Store评论优化,让你的APP评论上涨
- Python安装及IDE激活
- 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()
- 离线安装 Android 4.0 SDK
- 【转】简明 Vim 练级攻略
- Vasya and Multisets CodeForces - 1051C(英语限制了我的想象力)
- Java编程思想中关于闭包的一个例子
- (转)WebSphere 中池资源调优 - 线程池、连接池和 ORB
- shell中的字符串操作和数学运算
- C#多线程编程系列(一)- 简介
- 可用的rtmp卫视直播地址
- Python—numpy.flatnonzero()
- 四种launchMode
- Oracle常见的33个等待事件
热门文章
- Django运行SQL语句
- IOS VLC (第三方音频)的使用
- 【安卓】imageView.scaleType取centerCrop后,再用padding时显示异常?
- Vue.js系列之vue-resource(6)
- Javascript中==和===的区别
- context.RewritePath
- C# File流操作
- C#解析HTML神器 Html Agility Pack
- JS JavaScript闭包和作用域
- SpringBoot非官方教程 | 第四篇:SpringBoot 整合JPA