Accepted : 42 | Submit : 122 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
题目描述五虎棋是流传在东北民间的一种游戏,GG小的时候,经常被表哥虐得很惨。 o...o ..... ..o.. ..... o...o 五虎(5分): o.o .o. o.o 通天(5分): ..... ..o.. o.... ooooo ..o.. .o... ..... ..o.. ..o.. ..... ..o.. ...o. ..... ..o.. ....o 四斜(4分): ...o. ..... ..... .o... ..o.. o.... ....o ..o.. .o... .o... ...o. ...o. o.... ..o.. ..o.. ....o ..... ...o. .o... ..... 三斜(3分): ..o.. ..... ..... ..o.. .o... ..... ..... ...o. o.... o.... ....o ....o ..... .o... ...o. ..... ..... ..o.. ..o.. ..... 小斗(1分): oo oo 例1 o...o .o.o. ..o.. .oooo o..oo o这名玩家形成了 1个大五虎(10分), 1个小五虎(5分), 2个通天(10分), 1个小斗(1分). 总分:10 + 5 + 10*2 + 1 = 36 .o.o. o.o.o .o.o. o.o.o .o.o. o这名玩家形成了 4个小五虎, 4个四斜 总分 5*4 + 4*4 = 36 输入多组测试数据。首先是一个整数T ( 1 ≤ T ≤ 10000 ),占一行,表示测试数据的组数. 输出对于每组测试数据,输出一行. 结果为两个整数,之间用一个空格隔开,分别表示先手(x)的得分,和后手(o)的得分。 样例输入2 oxxxo xoxox xxoxx xoooo oxxoo xoxox oxoxo xoxox oxoxo xoxox 样例输出9 26 57 36 SourceXTU OnlineJudge |
#include<stdio.h>
char map[7][7];
int sumx,sumo;
void find1()
{
if(map[0][0]==map[0][4]&&map[0][0]==map[4][0])
if(map[0][0]==map[4][4]&&map[0][0]==map[2][2])
{
if(map[0][0]=='x')sumx+=10;
else sumo+=10;
}
}
void find2()
{
for(int i=0; i<=2; i++)
for(int j=0; j<=2; j++)
{
if(map[i][j]==map[i][j+2]&&map[i][j]==map[i+2][j])
if(map[i][j]==map[i+2][j+2]&&map[i][j]==map[i+1][j+1])
{
if(map[i][j]=='x')sumx+=5;
else sumo+=5;
}
}
}
void find3()
{
for(int i=0;i<=4;i++)
{
if(map[i][0]==map[i][1]&&map[i][0]==map[i][2])
if(map[i][0]==map[i][3]&&map[i][0]==map[i][4])
{
if(map[i][0]=='x')sumx+=5;
else sumo+=5;
}
if(map[0][i]==map[2][i]&&map[0][i]==map[1][i])
if(map[0][i]==map[3][i]&&map[0][i]==map[4][i])
{
if(map[0][i]=='x')sumx+=5;
else sumo+=5;
}
}
if(map[0][0]==map[1][1]&&map[0][0]==map[2][2])
if(map[0][0]==map[3][3]&&map[0][0]==map[4][4])
{
if(map[0][0]=='x')sumx+=5;
else sumo+=5;
}
if(map[0][4]==map[1][3]&&map[0][4]==map[2][2])
if(map[0][4]==map[3][1]&&map[0][4]==map[4][0])
{
if(map[0][4]=='x')sumx+=5;
else sumo+=5;
}
}
void find4()
{
if(map[0][1]==map[1][2]&&map[0][1]==map[2][3]&&map[0][1]==map[3][4])
{
if(map[0][1]=='x')sumx+=4;
else sumo+=4;
}
if(map[1][0]==map[2][1]&&map[1][0]==map[3][2]&&map[1][0]==map[4][3])
{
if(map[1][0]=='x')sumx+=4;
else sumo+=4;
}
if(map[0][3]==map[1][2]&&map[0][3]==map[2][1]&&map[0][3]==map[3][0])
{
if(map[0][3]=='x')sumx+=4;
else sumo+=4;
}
if(map[1][4]==map[2][3]&&map[1][4]==map[3][2]&&map[1][4]==map[4][1])
{
if(map[1][4]=='x')sumx+=4;
else sumo+=4;
}
}
void find5()
{
if(map[0][2]==map[1][3]&&map[0][2]==map[2][4])
{
if(map[0][2]=='x')sumx+=3;
else sumo+=3;
}
if(map[2][0]==map[3][1]&&map[2][0]==map[4][2])
{
if(map[2][0]=='x')sumx+=3;
else sumo+=3;
}
if(map[0][2]==map[1][1]&&map[0][2]==map[2][0])
{
if(map[0][2]=='x')sumx+=3;
else sumo+=3;
}
if(map[2][4]==map[3][3]&&map[2][4]==map[4][2])
{
if(map[2][4]=='x')sumx+=3;
else sumo+=3;
}
}
void find6()
{
for(int i=0;i<=3;i++)
for(int j=0;j<=3;j++)
if(map[i][j]==map[i][j+1]&&map[i][j]==map[i+1][j]&&map[i][j]==map[i+1][j+1])
{
if(map[i][j]=='x')sumx+=1;
else sumo+=1;
}
}int main()
{
int t;
scanf("%d",&t);
while(t--)
{
for(int i=0;i<=4;i++)
scanf("%s",map[i]);
sumx=sumo=0;
find1(); find2(); find3();
find4(); find5(); find6();
printf("%d %d\n",sumx,sumo);
}
}