2488 - K

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

井字棋,又名圈圈叉叉游戏。规则是两个玩家,轮流在一个3*3的棋盘上画×和○。先在棋盘的对角线或水平线或垂直线上放置连续3个自己的标记的人,获得胜利。现在给你一个棋盘的最终局面,要你判断是×还是○获胜,或者是平局。

题目输入

一个3*3的棋盘,‘X’代表画的×,‘O’代表画的‘O’,‘.’代表尚未画任何标记。

题目输出

游戏的结果。如果×获胜,输出“X”,○获胜,输出“O”,否则输出“D”。

输入/输出样例

输入格式

X.O
XX.
XOO

OO.
XOX
XOX

OOX
XXO
OXX

输出格式

X
O
D

C语言解答

#include <stdio.h>
int main()
{
  int i,n,k;
  char a[3][4];
  while((scanf("%s",a[0]))!=EOF)
 {
     scanf("%s",a[1]);
     scanf("%s",a[2]);
     k=0;
     if(a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&a[1][1]!='.')
     {
       printf("%c\n",a[1][1]);
       continue;
     }
      if(a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&a[1][1]!='.')
     {
       printf("%c\n",a[1][1]);
       continue;
     }
    for(i=0;i<3;i++)
    {
       if(a[0][i]==a[1][i]&&a[1][i]==a[2][i]&&a[1][i]!='.')
       {
       printf("%c\n",a[1][i]);
       k++;
       break;
       }
      if(a[i][0]==a[i][1]&&a[i][1]==a[i][2]&&a[i][1]!='.')
       {
       printf("%c\n",a[i][1]);
       k++;
       break;
       }
    }
    if(k==0)
  printf("D\n");
 }
}

C++解答

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <set>
#include <map>
using namespace std;
string s[3];
int main(){
    while(cin>>s[0]>>s[1]>>s[2]){
        char win='D';
        if(s[0][0]==s[1][1] && s[1][1]==s[2][2]){
            win=s[0][0];
        }
        if(s[0][2]==s[1][1] && s[1][1]==s[2][0]){
            win=s[1][1];
        }
        for(int i=0;i<3;i++){
            if(s[i][0]==s[i][1] && s[i][1]==s[i][2]) win=s[i][0];
            if(s[0][i]==s[1][i] && s[1][i]==s[2][i]) win=s[0][i];
        }
        if(win=='.') win='D';
        printf("%c\n",win);
    }
    return 0;
}