CSP认证 201803-4 棋局评估(极大极小值搜索)

2024-04-18 06:48

本文主要是介绍CSP认证 201803-4 棋局评估(极大极小值搜索),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:http://118.190.20.162/view.page?gpid=T70

 

题目大意:给一个3*3棋盘,问按照最优策略下,如果1能赢输出赢后剩余未下的格子数+1,2能赢输出赢后负的剩下未下的格子数-1,平局输出0

 

题目思路:3*3很小,直接暴力所有情况,先手下尽可能想让值高,反手下尽可能想让值低,所以只用在所有可能中尽可能取利于自己的情况即可

 

以下是代码:
 

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
int mp[5][5];
int solve(int p){int num=0;rep(i,1,3){rep(j,1,3){if(!mp[i][j])num++;}}if(p==1)return num+1;else return -num-1;
}
int check(){int num1=0,num2=0,p=0;rep(i,1,3){num1=0,num2=0;rep(j,1,3){if(mp[i][j]==1)num1++;if(mp[i][j]==2)num2++;}if(num1==3){p=1;break;}if(num2==3){p=2;break;}}if(p)return solve(p);rep(j,1,3){num1=0,num2=0;rep(i,1,3){if(mp[i][j]==1)num1++;if(mp[i][j]==2)num2++;}if(num1==3){p=1;break;}if(num2==3){p=2;break;}}if(p)return solve(p);num1=0,num2=0;rep(i,1,3){if(mp[i][i]==1)num1++;if(mp[i][i]==2)num2++;}if(num1==3)return solve(1);if(num2==3)return solve(2);num1=0,num2=0;rep(i,1,3){if(mp[i][4-i]==1)num1++;if(mp[i][4-i]==2)num2++;}if(num1==3)return solve(1);if(num2==3)return solve(2);int flag=0;rep(i,1,3){rep(j,1,3){if(!mp[i][j]){flag=1;break;}}if(flag)break;}if(!flag)return 0;return 1e9;
}
int dfs(int num){int rst;if(num==1)rst=-1e9;else rst=1e9;int flag=check();if(flag!=1e9)return flag;rep(i,1,3){rep(j,1,3){if(mp[i][j]==0){mp[i][j]=num;if(num==1)rst=max(rst,dfs(2));else rst=min(rst,dfs(1));mp[i][j]=0;}}}return rst;
}
int main()
{int t;scanf("%d",&t);while(t--){rep(i,1,3){rep(j,1,3){scanf("%d",&mp[i][j]);}}int ans=dfs(1);printf("%d\n",ans);}return 0;
}

 

这篇关于CSP认证 201803-4 棋局评估(极大极小值搜索)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/914051

相关文章

【文末附gpt升级秘笈】腾讯元宝AI搜索解析能力升级:千万字超长文处理的新里程碑

腾讯元宝AI搜索解析能力升级:千万字超长文处理的新里程碑 一、引言 随着人工智能技术的飞速发展,自然语言处理(NLP)和机器学习(ML)在各行各业的应用日益广泛。其中,AI搜索解析能力作为信息检索和知识抽取的核心技术,受到了广泛的关注和研究。腾讯作为互联网行业的领军企业,其在AI领域的探索和创新一直走在前列。近日,腾讯旗下的AI大模型应用——腾讯元宝,迎来了1.1.7版本的升级,新版本在AI搜

代码随想录算法训练营第三十九天|62.不同路径 63. 不同路径 II 343.整数拆分 96.不同的二叉搜索树

LeetCode 62.不同路径 题目链接:62.不同路径 踩坑:二维的vector数组需要初始化,否则会报错访问空指针 思路: 确定动态数组的含义:dp[i][j]:到达(i,j)有多少条路经递推公式:dp[i][j] = dp[i-1][j] + dp[i][j-1]初始化动态数组:dp[0][0] = 1遍历顺序:从左到右,从上到下 代码: class Solution {pu

leetcode刷题(45)——35. 二叉搜索树的最近公共祖先

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] 示例 1: 输入: root = [

【智能优化算法改进策略之局部搜索算子(五)—自适应Rosenbrock坐标轮换法】

1、原理介绍 作为一种有效的直接搜索技术,Rosenbrock坐标轮换法[1,2]是根据Rosenbrock著名的“香蕉函数”的特点量身定制的,该函数的最小值位于曲线狭窄的山谷中。此外,该方法是一种典型的基于自适应搜索方向集的无导数局部搜索技术。此法于1960年由Rosenbrock提出,它与Hooke-Jeeves模式搜索法有些类似,但比模式搜索更为有效。每次迭代运算分为两部分[3]: 1)

Day59 代码随想录打卡|二叉树篇---把二叉搜索树转换为累加树

题目(leecode T538): 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下,二叉搜索树满足下列约束条件: 节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。 方法:本题

智能优化算法改进策略之局部搜索算子(六)--进化梯度搜索

1、原理介绍     进化梯度搜索(Evolutionary Gradient Search, EGS)[1]是兼顾进化计算与梯度搜索的一种混合算法,具有较强的局部搜索能力。在每次迭代过程中,EGS方法首先用受进化启发的形式估计梯度方向,然后以最陡下降的方式执行实际的迭代步骤,其中还包括步长的自适应,这一过程的总体方案如下图所示:     文献[1]

程序人生:关于RHCE红帽认证这件事

花了两个月备考红帽,最终终于双满分通过。  关于考试 RHCE红帽认证总共需要考两门:RHCSA、RHCE。 RHCSA主要是考察基本的Linux操作:用户、权限、空间扩容、yum、容器等内容。 RHCE主要是考察ansible playbook 代码的开发。 通过考试没有别的捷径,就是敲命令,键盘照着冒烟了敲。 关于备考        说是两个月时间备考,其实前面一个

虚拟现实环境下的远程教育和智能评估系统(十三)

管理/教师端前端工作汇总education-admin: 首先是登录注册页面的展示 管理员 首页 管理员登录后的首页如下图所示 管理员拥有所有的权限 课程管理 1、可以查看、修改、增添、删除课程列表内容 2、可以对课程资源进行操作 3、可以对课程的类别信息进行管理,课程类别支持三级索引 用户管理  1、可以对学员列表进行操作,对学员进行增删改查

yii2 模糊搜索,使索引生效

$str1 = ‘名称’; $str2 = ‘描述’; Course::find() // %这样放,可以使name索引(设置了索引的话。同时false不能删掉,否则索引失效)生效 ->where([‘LIKE’, ‘name’, $str1.’%’, false]) ->andWhere([‘status’=>1]) // %这样放,可以使desc索引(设置了索引的话。同时false不能删掉,否

openjudge_2.5基本算法之搜索_8783:单词接龙

概要 8783:单词接龙 总时间限制: 1000ms 内存限制: 65536kB 描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含