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

相关文章

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

C# ComboBox下拉框实现搜索方式

《C#ComboBox下拉框实现搜索方式》文章介绍了如何在加载窗口时实现一个功能,并在ComboBox下拉框中添加键盘事件以实现搜索功能,由于数据不方便公开,作者表示理解并希望得到大家的指教... 目录C# ComboBox下拉框实现搜索步骤一步骤二步骤三总结C# ComboBox下拉框实现搜索步骤一这

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。