uva 141


//

//  main.cpp

//  ceshi

//

//  Created by 戴志扬 on 2016/11/6.

//  Copyright © 2016 sky.dai. All rights reserved.

//


//

//  main.cpp

//  ceshi

//

//  Created by 戴志扬 on 2016/10/25.

//  Copyright © 2016 sky.dai. All rights reserved.

//


#include<iostream>

#include<cstdio>

#include<map>

#include<climits>

#include<cmath>

#include<cstring>

#include<vector>

#include<cstdlib>

#include<list>


using namespace std;


char Map[52][52];

map<string,int>judge;

int Size;


void initial()

{

    judge.clear();

    memset(Map,'1',sizeof(Map));

    

}


string switch_over(int k)

{

    string str;

    switch (k)

    {

        case 0:

            for(int i=0;i<Size;i++)

                for(int j=0;j<Size;j++)

                    str+=Map[i][j];

            break;

       case 1:

            for(int i=Size-1;i>=0;i--)

                for(int j=0;j<Size;j++)

                    str+=Map[i][j];

            break;

       case 2:

            for(int i=0;i<Size;i++)

                for(int j=Size-1;j>=0;j--)

                    str+=Map[i][j];

        case 3:

            for(int i=Size-1;i>=0;i--)

                for(int j=Size-1;j>=0;j--)

                    str+=Map[i][j];


    }

    return str;

}

int main()

{

    while(scanf("%d",&Size)== 1&& Size)

    {

        initial();


        

        int x,y;

        char ch;

        string str;

        bool flag = false;

        

        for(int i=0;i<Size;i++)

            for(int j=0;j<Size;j++)

                str+=Map[i][j];

        judge[str] = 1;

        //保存图像

        int ans =0 ;

        int man = 0;

        

        for(int i=0;i<Size*2;i++)

        {

            scanf("%d %d %c",&x,&y,&ch);

            if(flag)

                continue;

            if(ch=='+')

                Map[x-1][y-1] = '2';

            else

                Map[x-1][y-1] = '1';

            //input&&construct map

            string Str[4];

            for(int j=0;j<4;j++)

            {

                Str[j] = switch_over(j);

                if(judge[Str[j]]!=0)

                {

                    flag = true;

                    ans = i+1;

                     man  = i;

                    break;

                }

                    

            }

            if(flag == false)

            {

                for(int j=0;j<4;j++)

                    judge[Str[j]]=1;

            }

            

        }

        if(flag == true)

        {

            if(man&1)

                man = 1;

            else

                man =2;

            printf("Player %d wins on move %d\n",man,ans);

        }

        else printf("Draw\n");

        

        

    }

    return 0;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值