屎山代码求调!
查看原帖
屎山代码求调!
1221838
IAKIOI321楼主2024/3/26 17:55
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
using namespace std;
char c[20];
int x,o,d;
int flag1,flag2;
int h(int t,int q){
	int qq=0;
	if(q==1){
		for(int i=0;i<=2;i++){
			if(c[t*3-i]=='X'){
				qq++;
			}
		}
		if(qq==3) return 1;
		else return 0;
	}
	else{
		for(int i=0;i<=2;i++){
			if(c[t*3-i]=='0'){
				qq++;
			}
		}
		if(qq==3) return 1;
		else return 0;
	}
}
int s(int t,int q){
	int qq=0;
	if(q==1){
		for(int i=0;i<=2;i++){
			if(c[1+(3*i)]=='X')
			qq++;
		}
		if(qq==3) return 1;
		else return 0;
	}
	else{
	for(int i=0;i<=2;i++){
			if(c[1+(3*i)]=='0')
			qq++;
		}
		if(qq==3) return 1;
		else return 0;
	}
}
int main(){
	for(int i=1;i<=9;i++){
		cin>>c[i];
		if(c[i]=='X') x++;
		if(c[i]=='0') o++;
		if(c[i]=='.') d++; 
	} 
	if(x-o>=2||o-x>=1) {cout<<"illegal"<<endl;return 0;}
	else{
		if(s(1,1)==1||s(2,1)==1||s(3,1)==1) flag1++;
		if(h(1,1)==1||h(2,1)==1||h(3,1)==1) flag1++;
		if(c[1]=='X'&&c[5]=='X'&&c[9]=='X') flag1++;
		if(c[3]=='X'&&c[5]=='X'&&c[7]=='X') flag1++;
		//
			if(s(1,2)==1||s(2,2)==1||s(3,2)==1) flag2++;
			if(h(1,2)==1||h(2,2)==1||h(3,2)==1) flag2++;
			if(c[1]=='0'&&c[5]=='0'&&c[9]=='0') flag2++;
			if(c[3]=='0'&&c[5]=='0'&&c[7]=='0') flag2++;
			//
			if(flag1>=1&&flag2>=1) cout<<"illegal"<<endl;
			else{
				if(flag1>=1) cout<<"the first player won"<<endl;
				else{
					if(flag2>=1) cout<<"the second player won"<<endl;
					else{
						if(x+o==9){
							cout<<"draw"<<endl;
						}
						else{
							if(x==o) {
								cout<<"first"<<endl;
							}
							else{
								if(x>o) {
									cout<<"second"<<endl;	
								}
							}
						}
					}
				}		
			}
		}	
		return 0;
	}

就是不知道哪里错了QAQ

2024/3/26 17:55
加载中...