首页 > 其他分享 >CF3C Tic-tac-toe

CF3C Tic-tac-toe

时间:2023-08-27 10:44:42浏览次数:37  
标签:int 等于 个数 下棋 棋子 tac 情况 CF3C toe

AC 后逛了逛题解,发现好像自己的代码比大佬都短很多?

思路

数据范围很小,先暴力求得 X0. 的个数,然后暴力求得连着的三个 X0 的个数。

然后,我们来分类讨论:

  • 非法的情况一定优先判断,只有不非法才可能是其他情况,那么非法的可能有:

    1. \(A\) 和 \(B\) 都能赢。

    2. X 的个数既不是 0 的个数也不是 0 的个数 \(+1\)。

    3. 只有 \(A\) 能赢且 X 的数量等于 0 的数量

    4. 只有 \(B\) 能赢且 X 的数量等于 0 的数量。

  • 解释:

    1. 不可能出现两者皆赢的可能。
    2. 棋局中 \(A\) 最多比 \(B\) 多下一子,至少与 \(B\) 一样。
    3. \(A\) 已经赢了,但是 \(B\) 还在继续下棋。
    4. \(B\) 已经赢了,但是 \(A\) 还在继续下棋。
  • 然后是谁赢的情况,这个不用细说

  • 该谁下棋的情况,如果 \(A\) 的棋子数等于 \(B\) 的棋子数,那么该 \(A\) 下,如果 \(A\) 的棋子数等于 \(B\) 的棋子数 \(+1\) 并且有空位置,则该 \(B\) 下。

  • 剩下的就是平局情况了。

总结:情况较多,比较麻烦,但是数据范围很小。

AC code

#include<bits/stdc++.h>
using namespace std;
char ch[4];
int m[4][4],num[3],win[3];
int main()
{
	for(int i=1;i<=3;++i)
	{
		scanf("%s",ch+1);
		for(int j=1;j<=3;++j) m[i][j]=(ch[j]=='X')?1:(ch[j]=='0')?2:0,++num[m[i][j]];//统计每个情况的个数 
	}
	/*统计两人能获胜的个数*/ 
	for(int i=1;i<=3;++i) if(m[i][1]==m[i][2]&&m[i][2]==m[i][3]) ++win[m[i][1]];//同行相同 
	for(int j=1;j<=3;++j) if(m[1][j]==m[2][j]&&m[2][j]==m[3][j]) ++win[m[1][j]];//同列相同 
	if(m[1][1]==m[2][2]&&m[2][2]==m[3][3]) ++win[m[1][1]];//斜角相同 
	if(m[3][1]==m[2][2]&&m[2][2]==m[1][3]) ++win[m[3][1]];//斜角相同
	/*非法情况*/
	if(win[1]&&win[2]) printf("illegal"),exit(0);
	if(num[1]!=num[2]&&num[1]!=num[2]+1) printf("illegal"),exit(0);
	if(win[2]&&num[1]==num[2]+1) printf("illegal"),exit(0);
	if(win[1]&&num[1]==num[2]) printf("illegal"),exit(0);
	/*某人赢的情况*/
	if(win[1]) printf("the first player won"),exit(0);
	if(win[2]) printf("the second player won"),exit(0);
	/*该某人下棋的情况*/
	if(num[1]==num[2]) printf("first"),exit(0);
	if(num[1]==num[2]+1&&num[0])printf("second"),exit(0);
	/*平局情况*/
	printf("draw");
	return 0;
}

标签:int,等于,个数,下棋,棋子,tac,情况,CF3C,toe
From: https://www.cnblogs.com/One-JuRuo/p/17659964.html

相关文章

  • OpenStack遇到问题收集
    1.AMQPChannelExceptionPROBLEM:在用stable/folsom的devstack安装stable/folsom的openstack时,遇到下面的问题:(nova.api.openstack):TRACE:AMQPChannelException:(406,u"PRECONDITION_FAILED-cannotredeclareexchange'nova'invhost'/nova'withdiff......
  • Openstack Nova Security Group——安全组之架构篇
    哈,又回来了!公司同事说不要只停留在逻辑层,你要对跑在你程序底下的数据流也要非常的清楚。但是这里还是先介绍一下逻辑层,在代码的角度看是如何实现这个功能的,关于底层的数据流,还需要哦酝酿一段时间,之后会再总结一篇底层数据流的文章,真难为我了!一、什么是安全组安全组,翻译成英文是sec......
  • 使用pdb调试openstack (How to debug openstack using pdb )
    终于摸索出了一个调试openstack的简单方法,使用pdb进行单步调试,对于分析代码很有帮助。注意,这个方法只适用于用devstack安装的openstack。调试主要是使用了一个脚本,这个脚本不记得是从哪下载的了,是用来重启使用devstack安装的openstack的各个服务的,后来,我又结合devstack的stack.sh和......
  • python——metaclass
    元类一般用于创建类。在执行类定义时,解释器必须要知道这个类的正确的元类。解释器会先寻找类属性__metaclass__,如果此属性存在,就将这个属性赋值给此类作为它的元类。如果此属性没有定义,它会向上查找父类中的__metaclass__.如果还没有发现__metaclass__属性,解释器会检查名字为_......
  • CS0012: 类型“System.Data.Objects.DataClasses.EntityObject”在未被引用的程序集中
    CS0012:类型“System.Data.Objects.DataClasses.EntityObject”在未被引用的程序集中定义。必须添加对程序集“System.Data.Entity,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”的引用。网址:yii666.com<网址:yii666.com处理办法,在web.config-》syst......
  • 华为数通方向HCIP-DataCom H12-821题库(单选题:281-300)
    第281题OSPF协议对邻居路由器之间交换的所有数据包都具有认证能力,在VRP系统中,OSPF支持以下哪一种算法?A、DESB、MD5C、AESD、RSA答案:B解析:在VRP系统中,OSPF协议支持的认证算法是MD5。第282题以下关于堆叠拓扑连接方式的描述,错误的是哪一项?A、根据堆叠连线方式的不同,堆叠可组成链......
  • [ Vue ] opensslErrorStack: [ ‘error:03000086:digital envelope routines::initial
    报错触发场景:Mac系统,开发工具启动从其他地方拷贝或者git克隆来的,非自建前端Vue项目时。报错内容如下: opensslErrorStack:['error:03000086:digitalenveloperoutines::initializationerror'], library:'digitalenveloperoutines', reason:'unsupported', code......
  • 华为数通方向HCIP-DataCom H12-821题库(单选题:261-280)
    第261题以下关于IPv6过渡技术的描述,正确的是哪些项?A、转换技术的原理是将IPv6的头部改写成IPv4的头部,或者将IPv4的头部改写成IPv6的头部B、使用隧道技术,能够将IPv4封装在IPv6隧道中实现互通,但是隧道的端点需要支持双栈技术C、转换技术适用于纯IPv4网络与纯IPv6网络之间的通信,方......
  • Spring Data JPA查询报错java.lang.StackOverflowError hibernate SpringBoot
    toString()造成死循环,重写toString()方法现象测试JPA的多对多查询时,有一个User对象,该User有多个Role,然后报错User@Data@Entity@Table(name="user")publicclassUser{@Id//主键自动增长@GeneratedValue(strategy=GenerationType.IDENTITY)@Co......
  • HCIP_OpenStack总结部分
    目录第一章架构介绍1.OpenStack简介1.1OpenStack简述1.2OpenStack工作原理概述1.3开源OpenStack版本介绍1.4设计理念1.5OpenStack与云计算2.OpenStack架构2.1OpenStack架构简介3.OpenStack核心服务4.OpenStack服务交互第二章界面管理1.Horizon简介1.1简介1......