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

相关文章

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与

SpringSecurity6.0 如何通过JWTtoken进行认证授权

《SpringSecurity6.0如何通过JWTtoken进行认证授权》:本文主要介绍SpringSecurity6.0通过JWTtoken进行认证授权的过程,本文给大家介绍的非常详细,感兴趣... 目录项目依赖认证UserDetailService生成JWT token权限控制小结之前写过一个文章,从S

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

一文详解kafka开启kerberos认证的完整步骤

《一文详解kafka开启kerberos认证的完整步骤》这篇文章主要为大家详细介绍了kafka开启kerberos认证的完整步骤,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、kerberos安装部署二、准备机器三、Kerberos Server 安装1、配置krb5.con

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.

java如何通过Kerberos认证方式连接hive

《java如何通过Kerberos认证方式连接hive》该文主要介绍了如何在数据源管理功能中适配不同数据源(如MySQL、PostgreSQL和Hive),特别是如何在SpringBoot3框架下通过... 目录Java实现Kerberos认证主要方法依赖示例续期连接hive遇到的问题分析解决方式扩展思考总

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe