井字棋
分数 20
作者 紫泉
单位 贵州工程应用技术学院
大佬和小白玩 “井”字棋。也就是在九宫格中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。
输入格式:
三行三列的字符元素,代表棋盘状态,字符元素用空格分开,代表当前棋盘,其中元素为D代表大佬玩家的棋子,为O表示没有棋子,为X代表小白玩家的棋子。
输出格式:
如果大佬获胜,输出“姜还是老的辣!”;
如果小白获胜,输出“长江后浪推前浪!”;
如果没有获胜,输出“再来一局!”。
输入样例:
D O X
O D X
X O D
输出样例:
在这里给出相应的输出。例如:
姜还是老的辣!
#include<cmath>
#include<algorithm>
using namespace std;
char a[3][3];
int main()
{
int f = 0;
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
cin >> a[i][j];
if ((a[0][0] == a[1][1] && a[0][0] == a[2][2]) || (a[0][2] == a[1][1] && a[0][2] == a[2][0]))
{
f = 1;
if (a[1][1] == 'D')cout << "姜还是老的辣!";
if (a[1][1] == 'X')cout << "长江后浪推前浪!";
if (a[1][1] == 'O')f = 0;
}
else
{
if (f == 1)return 0;
else
{
for (int i = 0; i < 3; ++i)
{
char c = a[i][0];
if (a[i][1] == c && a[i][2] == c)
{
f = 1;
if (c == 'D')cout << "姜还是老的辣!";
if (c == 'X')cout << "长江后浪推前浪!";
if (c == 'O')f = 0;
}
}
if (f == 0)
{
for (int i = 0; i < 3; ++i)
{
char c = a[0][i];
if (a[1][i] == c && a[2][i] == c)
{
f = 1;
if (c == 'D')cout << "姜还是老的辣!";
if (c == 'X')cout << "长江后浪推前浪!";
if (c == 'O')f = 0;
}
}
if (f == 0)
cout << "再来一局!";
}
}
}
return 0;
}