码迷,mamicode.com
首页 > 其他好文 > 详细

Tic-Tac-Toe-(暴力模拟)

时间:2019-05-04 00:16:02      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:algo   mmm   tac   style   als   col   stdio.h   blank   algorithm   

https://ac.nowcoder.com/acm/contest/847/B

#include<algorithm>
#include<cstring>
#include<iostream>
#include<math.h>
#include<string>
#include<stdio.h>
#include<map>
#include<queue>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;

char a[3][5];
int t;

bool check()
{
    int num1=0,num2=0;///白子数,空位数
    for(int i=0;i<3;i++)///横的
    {
        num1=0;num2=0;
        for(int j=0;j<3;j++)
        {
            if( a[i][j]==W )
                num1++;
            else if( a[i][j]==# )
                num2++;
            else
                break;
        }
        if(num1==2 && num2==1)
            return true;
    }

    for(int j=0;j<3;j++)///竖的
    {
        num1=num2=0;
        for(int i=0;i<3;i++)
        {
            if( a[i][j]==W )
                num1++;
            else if( a[i][j]==# )
                num2++;
            else
                break;
        }
        if(num1==2 && num2==1)
            return true;
    }
    num1=num2=0;
    for(int i=0;i<3;i++)///左上到左下
    {
        if( a[i][i]==W )
               num1++;
        else if( a[i][i]==# )
            num2++;
        else
            break;
    }
    if(num1==2 && num2==1)
        return true;
    num1=num2=0;
    for(int i=0;i<3;i++)///左下到右上
    {
        if(i==0)
        {
            if( a[2][0]==W )
                num1++;
            else if( a[2][0]==# )
                num2++;
            else if( a[2][0]==B)
                break;
        }
        if(i==1)
        {
            if( a[1][1]==W )
                num1++;
            else if( a[1][1]==# )
                num2++;
            else if( a[1][1]==B)
                break;
        }
        if(i==2)
        {
            if( a[0][2]==W )
                num1++;
            else if( a[0][2]==# )
                num2++;
            else if( a[0][2]==B)
                break;
        }
    }
    if(num1==2 && num2==1)
        return true;
    return false;
}


int main()
{
    scanf("%d",&t);
    while(t--)
    {
        int flag;
        flag=0;
        for(int i=0;i<3;i++)
            scanf("%s",a[i]);
        if(check())///正常情况下一步能赢
        {
            for(int i=0;i<3&&flag==0;i++)
            {
                for(int j=0;j<3&&flag==0;j++)
                {
                    if( a[i][j]==W )
                    {
                        a[i][j]=#;
                        if(!check())
                            flag=1;///存在某种情况被拿了之后不能赢
                        a[i][j]=W;
                    }
                }
            }
            if(flag==0)
                printf("Alice\n");
            else
                printf("Emmm\n");
        }
        else
        {
            printf("Bob\n");
        }
    }
    return 0;
}

 

Tic-Tac-Toe-(暴力模拟)

标签:algo   mmm   tac   style   als   col   stdio.h   blank   algorithm   

原文地址:https://www.cnblogs.com/shoulinniao/p/10806946.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!