哪里错了?
查看原帖
哪里错了?
356961
Zhoumy小号楼主2020/12/21 19:19
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<stdio.h>
#include<queue>
#include<iomanip>
#include<string>
#include<cstdio>
using namespace std;
int map[4][4]/*1:X 2:O*/,x,o,much1,much2,how1,how2;
int main(){
	for(int i=1;i<=3;i++){
		for(int j=1;j<=3;j++){
			char a;
			cin>>a;
			if(a=='X'){
				map[i][j]=1;
				x++;
			}
			if(a=='0'){
				map[i][j]=2;
				o++;
			}
		}
	}
	if(o>x||x-1>o){
		cout<<"illegal";
	}
	else{
		for(int i=1;i<=3;i++){//横向搜索 
			much1=0,much2=0;//初始化
			for(int j=1;j<=3;j++){
				if(map[i][j]==1)much1++;
				if(map[i][j]==2)much2++;
			} 
			if(much1==3)how1++;
			if(much2==3)how2++;
		}
		for(int i=1;i<=3;i++){//纵向搜索 
			much1=0,much2=0;//初始化
			for(int j=1;j<=3;j++){
				if(map[j][i]==1)much1++;
				if(map[j][i]==2)much2++;
			} 
			if(much1==3)how1++;
			if(much2==3)how2++;
		}
		much1=0,much2=0;//初始化
		for(int i=1;i<=3;i++){//对角线1
			if(map[i][i]==1)much1++;
			if(map[i][i]==2)much2++;
		}
		if(much1==3)how1++;
		if(much2==3)how2++;
		much1=0,much2=0;//初始化
		for(int i=3;i>=1;i--){//对角线2
			if(map[i][i]==1)much1++;
			if(map[i][i]==2)much2++;
		}
		if(much1==3)how1++;
		if(much2==3)how2++;
		if(how1>0&&how2>0){
			cout<<"illegal";
		}
		else if(how1>1||how2>1){
			cout<<"illegal";
		}
		else if(how1>0){
			cout<<"the first player won";
		} 
		else if(how2>0){
			cout<<"the second player won";
		}
		else if(o+x==3*3){
			cout<<"draw"; 
		}
		else if(x==o){
			cout<<"first";
		}
		else{
			cout<<"second"; 
		}
		cout<<endl<<how1<<" "<<how2;
	}
	/*for(int i=1;i<=3;i++){
		cout<<endl;
		for(int j=1;j<=3;j++){
			cout<<map[i][j];
		}
	}*/
	return 0;
}

看了N遍发现好似没问题

2020/12/21 19:19
加载中...