2488 - K
时间限制 : 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; }