井字棋,英文名叫Tic-Tac-Toe,是一种在3*3格子上进行的连珠游戏,和五子棋类似,由于棋盘一般不画边框,格线排成井字故得名。游戏需要的工具仅为纸和笔,然后由分别代表O和X的两个游戏者轮流在格子里留下标记(一般来说先手者为X),任意三个标记形成一条直线,则为获胜。(来自百度百科)
请你判断后手者是否存在任意三个标记形成一条直线?
输入格式:
第一行输入一个整数t(1<=t<=1000)代表t组输入。接下来每组输入一个井字棋游戏局面。
输出格式:
若后手者存在任意三个标记形成一条直线输出"yes",否则输出"no"。
#include <iostream>
using namespace std;
void Judgegame(char str[3][3])
{
int i,sum=0;
for(i=0;i<3;i++)
{
if(str[i][0]=='O')
{
if((str[i][0]==str[i][1])&&(str[i][1]==str[i][2]))
{
cout<<"yes"<<endl;
sum++;
break;
}
}
}
for(i=0;i<3;i++)
{
if(str[0][i]=='O')
{
if((str[0][i]==str[1][i])&&(str[1][i]==str[2][i]))
{
cout<<"yes"<<endl;
sum++;
break;
}
}
}
if(str[1][1]=='O')
{
if(((str[0][0]==str[1][1])&&(str[1][1]==str[2][2]))||((str[0][2]==str[1][1])&&(str[1][1]==str[2][0])))
{
cout<<"yes"<<endl;
sum++;
}
}
if(sum==0)
{
cout<<"no"<<endl;
}
}
int main()
{
int t,i,j,k;
char a[3][3];
cin>>t;
for(i=1;i<=t;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)
{
cin>>a[j][k];
}
}
cout<<endl;
Judgegame(a);
}
return 0;
}
我重新打一个你能给我采纳嘛?
求采纳
#include<bits/stdc++.h>
using namespace std;
int a[4][4];
int s[8]={1,1,1,1,1,1,1,1};
bool pand()
{
for(int i=1;i<=3;i++)
{
if(!a[i][1]) s[1]=0;
if(!a[1][i]) s[2]=0;
if(!a[i][i]) s[3]=0;
if(!a[i][3]) s[4]=0;
if(!a[3][i]) s[5]=0;
if(!a[i][4-i]) s[6]=0;
}//共六种情况
for(int i=1;i<=6;i++)
if(s[i]==1) return 1;
return 0;
}
int main()
{
int t
cin>>t;
while(t>0)
{
for(int i=1;i<=3;i++)
{
for(int j=1;j<=3;j++)
{
char c;
cin>>c;
if(c=='O') a[i][j]=1;
else a[i][j]=0;
}
}
if(pand()) cout<<"yes"<<endl;
else cout<<"no"<<endl;
t--;
}
}
判断同一行三个字符是否相同,只要字符数组第i行的[i][0],[i][1],[i][2]三个相等就可以。
同理,
列,i列[0][i],[1][i],[2][i]
斜对角:[0][0],[1][1],[2][2]
[0][2],[1][1],[2][0]
1.
#include<iostream>
#include<cstdio>
using namespace std;
int a[4][4];
int main()
{
int t;
char ch;
scanf("%d",&t);
// scanf("\n");
while(t--)
{
int flag=0;
for(int i=0;i<3;i++)
{
scanf("\n");
for(int j=0;j<3;j++)
{
ch=getchar();
if(ch=='O') a[i][j]=1;
else a[i][j]=0;
}
}
// scanf("\n");
for(int i=0;i<3;i++)
{
if(a[i][0]+a[i][1]+a[i][2]==3) cout<<"yes"<<endl;
flag=1;
break;
}
for(int i=0;i<3;i++)
if(a[0][i]+a[1][i]+a[2][i]==3)
{cout<<"yes"<<endl;flag=1;}
if(a[0][0]+a[1][1]+a[2][2]==3) {cout<<"yes"<<endl;flag=1;}
if(a[2][0]+a[1][1]+a[0][2]==3){ cout<<"yes"<<endl;flag=1;}
if(flag=0)cout<<"no"<<endl;
}
return 0;
}