哪里错了?
  • 板块CF3C Tic-tac-toe
  • 楼主D2T1xubiaoshi
  • 当前回复3
  • 已保存回复3
  • 发布时间2020/10/30 21:53
  • 上次更新2023/11/5 09:28:25
查看原帖
哪里错了?
390770
D2T1xubiaoshi楼主2020/10/30 21:53
//CF3C
#include <iostream>
#define fori for(int i=0; i<3; i++)
#define forj for(int j=0; j<3; j++)
#define r0 return 0;
using namespace std;
char a[3][3];

int ret(char a){
	if(a=='X') return 1;
	if(a=='O') return 2;
	if(a=='.') return 3;
}

int won(){
	fori if(a[i][0]==a[i][1] && a[i][1]==a[i][2]) return ret(a[i][0]);
	fori if(a[0][i]==a[1][i] && a[1][i]==a[2][i]) return ret(a[0][i]);
	if(a[0][0]==a[1][1] && a[1][1]==a[2][2])      return ret(a[0][0]);
	if(a[0][2]==a[1][1] && a[1][1]==a[2][0])      return ret(a[0][2]);
	return 4;
}

int main(){
	int x=0,o=0,p=0;
	fori forj {
		cin >> a[i][j];
		if(a[i][j]=='X') x++;
		if(a[i][j]=='O') o++;
		if(a[i][j]=='.') p++;
	}
	if(o>x || x-1>o)    {cout << "illegal";              r0}
	if(won()==1)        {cout << "the first player won"; r0}
	if(won()==2)        {cout << "the second player won";r0}
	if(p==0 && won()==4){cout << "draw";                 r0}
	if(x==o)            {cout << "first";                r0}
	if(x>o)             {cout << "second";               r0}
}
2020/10/30 21:53
加载中...