#3WA,改了之后#2WA不知道怎么回事
查看原帖
#3WA,改了之后#2WA不知道怎么回事
654928
Zjc20120331楼主2022/12/27 10:26

小a和uim喜欢互相切磋三子棋。~三子棋大家都玩过是吗?就是在九宫格里面OOXX(别想歪了),谁连成3个就赢了。

由于小a比较愚蠢,uim总是让他先。

我们用9个数字表示棋盘位置:123 456 789 所有的棋谱都是已经结束的棋局,要么一方获胜,要么平局。

今天,他们下了一下午的棋,小a为了提高技术,

录下了很多棋谱。他想知道,一盘棋结束时,到底是谁赢。

一行,如果小a赢,输出“xiaoa wins.”。如果uim赢,输出“uim wins.”。如果平局,输出“drew.”

V0.1

代码:

#include <bits/stdc++.h>
using namespace std;

bool m[10][10];

int main(){
    string s;
    cin >> s;
    if (s.size() < 9){
        if (s.size()%2)
            cout << "xiaoa wins.\n";
        else
            cout << "uim wins.\n";
        return 0;
    }//没有下满就最后下的人获胜
    for (int i = 0; i < s.size(); i++){
        int x = (s[i]-'0')/3+1;
        int y = (s[i]-'0')%3+1;
        m[x][y] = bool(i%2);
    }
    for (int i = 1; i <= 3; i++){
        if (m[i][1] == m[i][2] && m[i][2] == m[i][3])
		{
			if (m[i][1]) cout << "uim wins.\n";
			else cout << "xiaoa wins.\n";
			return 0;
		}
        if (m[1][i] == m[2][i] && m[2][i] == m[3][i])
		{
			if (m[1][i]) cout << "uim wins.\n";
			else cout << "xiaoa wins.\n";
			return 0;
		}
    }
    if (m[1][1] == m[2][2] && m[2][2] == m[3][3])
	{
		if (m[1][1]) cout << "uim wins.\n";
		else cout << "xiaoa wins.\n";
		return 0;
	}
	if (m[1][3] == m[2][2] && m[2][2] == m[3][1])
	{
		if (m[1][3]) cout << "uim wins.\n";
		else cout << "xiaoa wins.\n";
		return 0;
	}
    cout << "drew.\n";
    return 0;
}
V0.2

(就是把int x = (s[i]-'0')/3+1;改成了int x = (s[i]-'0'-1)/3+1;)

代码:

#include <bits/stdc++.h>
using namespace std;

bool m[10][10];

int main(){
    string s;
    cin >> s;
    if (s.size() < 9){
        if (s.size()%2)
            cout << "xiaoa wins.\n";
        else
            cout << "uim wins.\n";
        return 0;
    }//没有下满就最后下的人获胜
    for (int i = 0; i < s.size(); i++){
        int x = (s[i]-'0')/3+1;
        int y = (s[i]-'0'-1)%3+1;
        m[x][y] = bool(i%2);
    }
    for (int i = 1; i <= 3; i++){
        if (m[i][1] == m[i][2] && m[i][2] == m[i][3])
		{
			if (m[i][1]) cout << "uim wins.\n";
			else cout << "xiaoa wins.\n";
			return 0;
		}
        if (m[1][i] == m[2][i] && m[2][i] == m[3][i])
		{
			if (m[1][i]) cout << "uim wins.\n";
			else cout << "xiaoa wins.\n";
			return 0;
		}
    }
    if (m[1][1] == m[2][2] && m[2][2] == m[3][3])
	{
		if (m[1][1]) cout << "uim wins.\n";
		else cout << "xiaoa wins.\n";
		return 0;
	}
	if (m[1][3] == m[2][2] && m[2][2] == m[3][1])
	{
		if (m[1][3]) cout << "uim wins.\n";
		else cout << "xiaoa wins.\n";
		return 0;
	}
    cout << "drew.\n";
    return 0;
}
2022/12/27 10:26
加载中...