Five Tiger |
||
| Accepted : 34 | Submit : 107 | |
| 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
今天ac的第二个题,也是模拟的题,思路不是很复杂,按照题意来,把函数一个个写出来就行了,主要是输入输出的时候有点坑爹啊(字符串的输入啊!!细节还是处理的不好)在寝室自己用c语言写的时候输入就出现问题了!!按照思路写还是一下子就写出来了,今天也就是这个题目搞了好久,还好最终还是ac啦。 下面是ac的代码: #include <stdio.h>
#include <iostream>
using namespace std;
char Matrix[5][5];
using namespace std;
int big_tiger(char ch)//大五虎的情况 10分
{
if(Matrix[0][0]==ch && Matrix[0][4]==ch && Matrix[2][2]==ch && Matrix[4][0]==ch && Matrix[4][4]==ch)
return 10;
else
return 0;
}
int small_tiger(char ch)//小五虎的情况 5分
{
int total = 0;
int i=1,j=1;
for(i=1; i<4; i++)
for(j=1; j<4; j++)
{
if(Matrix[i][j]==ch && Matrix[i-1][j-1]==ch && Matrix[i+1][j+1]==ch && Matrix[i-1][j+1]==ch && Matrix[i+1][j-1]==ch)
total += 5;
}
return total;
}
int sky(char ch)//通天的情况 5分
{
int total = 0;
int i;
for(i=0; i<5; i++)
{
if(Matrix[i][0]==ch && Matrix[i][1]==ch && Matrix[i][2]==ch && Matrix[i][3]==ch && Matrix[i][4]==ch)
total += 5;
if(Matrix[0][i]==ch && Matrix[1][i]==ch && Matrix[2][i]==ch && Matrix[3][i]==ch && Matrix[4][i]==ch)
total += 5;
}
if(Matrix[0][0]==ch && Matrix[1][1]==ch && Matrix[2][2]==ch && Matrix[3][3]==ch && Matrix[4][4]==ch)
total+=5;
if(Matrix[0][4]==ch && Matrix[1][3]==ch && Matrix[2][2]==ch && Matrix[3][1]==ch && Matrix[4][0]==ch)
total+=5;
return total;
}
int four(char ch)//四斜的情况 4分
{
int total=0;
if(Matrix[0][3]==ch && Matrix[1][2]==ch && Matrix[2][1]==ch && Matrix[3][0]==ch)
total += 4;
if(Matrix[1][0]==ch && Matrix[2][1]==ch && Matrix[3][2]==ch && Matrix[4][3]==ch)
total += 4;
if(Matrix[1][4]==ch && Matrix[2][3]==ch && Matrix[3][2]==ch && Matrix[4][1]==ch)
total += 4;
if(Matrix[0][1]==ch && Matrix[1][2]==ch && Matrix[2][3]==ch && Matrix[3][4]==ch)
total += 4;
return total;
}
int three(char ch)// 三斜的情况 3分
{
int total=0;
if(Matrix[0][2]==ch && Matrix[1][1]==ch && Matrix[2][0]==ch)
total += 3;
if(Matrix[2][0]==ch && Matrix[3][1]==ch && Matrix[4][2]==ch)
total += 3;
if(Matrix[2][4]==ch && Matrix[3][3]==ch && Matrix[4][2]==ch)
total += 3;
if(Matrix[0][2]==ch && Matrix[1][3]==ch && Matrix[2][4]==ch)
total += 3;
return total;
}
int small_dou(char ch)// 小斗的情况 1分
{
int total = 0;
int i,j;
for(i=0; i<4; i++)
for(j=0; j<4; j++)
if(Matrix[i][j]==ch && Matrix[i+1][j]==ch && Matrix[i][j+1]==ch && Matrix[i+1][j+1]==ch)
{
total++;
}
return total;
}
int main()
{
int t,frist,last ,i,j;
scanf("%d",&t);
getchar();//吸收我们输入时输进去的空格;
//cin>>t;//这里我先前就用输入流和c语言的输入进行对比,这里用cin就方便多了,就不用在考虑这种情况了,这里要吸收教训!!
while(t--)
{
getchar();//题目要求要空一行
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
scanf("%c",&Matrix[i][j]);
getchar();//吸收我们的换行符
//cin>>Matrix[i][j];
}
frist=last=0;
frist=big_tiger(‘x‘)+small_tiger(‘x‘)+sky(‘x‘)+four(‘x‘)+three(‘x‘)+small_dou(‘x‘);
last=big_tiger(‘o‘)+small_tiger(‘o‘)+sky(‘o‘)+four(‘o‘)+three(‘o‘)+small_dou(‘o‘);
printf("%d %d\n",frist,last);
}
return 0;
}
只ac了几个简单题,看网上的大神说自己的经历的时候,都差不多都做了7.8百道题,任重而道远啊!!!
|
XTUOJ 1173 Five Tiger(模拟),布布扣,bubuko.com
原文:http://blog.csdn.net/whjkm/article/details/25560335