1.题目:井字游戏
用字符串数组作为井字游戏的游戏板board,判断该游戏板有没有可能最终形成.
游戏板是一个3 x 3 数组,由字符"","X"和"O"组成。字符""代表一个空位。两个玩家轮流将字符放入空位,一个玩家执X棋,另一个玩家执O棋
“X”和“O”只允许放置在空位中,不允许对已放有字符的位置进行填充。当有3个相同(且非空)的字符填充任何行、列或对角线时,游戏结束,board生成.
题目意思:就是看有没有人,成功的三个棋子连了一根线
2.算法:暴力算法
3.算法思想:暴力判断!!
4.代码:
/*************************************************
作者:She001
时间:2022/9/5
题目:井字游戏
用字符串数组作为井字游戏的游戏板board,判断该游戏板有没有可能最终形成.
游戏板是一个3 x 3 数组,由字符"","X"和"O"组成。字符""代表一个空位。两个玩家轮流将字符放入空位,一个玩家执X棋,另一个玩家执O棋
“X”和“O”只允许放置在空位中,不允许对已放有字符的位置进行填充。当有3个相同(且非空)的字符填充任何行、列或对角线时,游戏结束,board生成.
题目意思:就是看有没有人,成功的三个棋子连了一根线
.
算法:暴力算法
***************************************************/
#include<bits/stdc++.h>
using namespace std;
//
//算法:暴力算法
bool fangfa_1_1(char nn[])
{
int n=0;
char num[3][3]={0};//二维数组, 因为 井 行和列只有 3
for(int i=0;i<3;i++)//一维数组,转化为二维数组
{
for(int j=0;j<3;j++)
{
num[i][j]=nn[n];
n++;
}
}
for(int i=0;i<3;i++)
{
//一行一行的判断
if(num[i][0]==num[i][1])
{
if(num[i][1]==num[i][2])
{
return true;
}
}
//一列一列的判断
if(num[0][i]==num[1][i])
{
if(num[1][i]==num[2][i])
{
return true;
}
}
}
if(num[0][0]==num[1][1])//对角线判断
{
if(num[1][1]=num[2][2])
{
return true;
}
}
if(num[0][2]==num[1][1])//对角线判断
{
if(num[1][1]=num[2][0])
{
return true;
}
}
return false;
}
bool fangfa_1(char nn[])//nn 为一维数组,进入函数就会转发为二维数组
{
int n=0;
char num[3][3]={0};//二维数组, 因为 井 行和列只有 3
for(int i=0;i<3;i++)//一维数组,转化为二维数组
{
for(int j=0;j<3;j++)
{
num[i][j]=nn[n];
n++;
}
}
//判定 他是否 3 个棋子连成一线
int xcount=0;//统计 x 棋子的个数
int ocount=0; //统计 o 棋子的个数
for(int i=0;i<3;i++)//统计个数
{
for(int j=0;j<3;j++)
{
if(num[i][j]=='o')
{
ocount++;
}
if(num[i][j]=='x')
{
xcount++;
}
}
}
//x 下完之后就成功了 所以 xcount - ocout==1
//o 下完之后就成功了 所以 xcount =ocout
//假如这两种情况都不是,就是假的
if(xcount!=ocount && xcount - ocount!=1)//第一次判断
{
return false;
}
//第二次判断
int a=fangfa_1_1(nn);
if(a==1)
{
return true;
}
else
{
return false;
}
}
int main()
{
/*
int num[3][3]={
{'x',' ','o'},
{'x','o','x'},
{'o','x','o'}
};
*/
char num[]={'x',' ','o','x','o','x','o','x','o'};
char num1[]={'x','o','o','x',' ','x','o','x','o'};
int a=fangfa_1(num);
if(a==1)
{
cout<<"true"<<endl;
}
else
{
cout<<"false"<<endl;
}
int b=fangfa_1(num1);
if(b==1)
{
cout<<"true"<<endl;
}
else
{
cout<<"false"<<endl;
}
return 0;
}