解题报告:
题目大意:五虎棋是一种棋,规则这里就不说了,现在给出一种一种棋盘的局面图,问题是分别求出两方所得到的分数。
模拟题,我是直接暴力将每种情况都枚举出来,先定义一个map[][]数组,将棋盘局面存起来,然后对每一种可以得分的方案进行判断,因为数据量不大,一共就25个点。代码可能会有点长。。。。。
View Code
1 #include2 #include 3 char map[6][6]; 4 int bigtiger(char ch) { 5 if(map[1][1]==ch&&map[1][5]==ch&&map[3][3]==ch&&map[5][1]==ch&&map[5][5]==ch) 6 return 10; 7 else 8 return 0; 9 }10 int tiger(char ch) {11 int sum=0;12 for(int i=1;i<=3;++i)13 for(int j=1;j<=3;++j) {14 if(map[i][j]==ch&&map[i][j+2]==ch&&map[i+1][j+1]==ch&&map[i+2][j]==ch&&map[i+2][j+2]==ch)15 sum+=5;16 }17 return sum;18 }19 int tongtian(char ch) {20 int sum=0;21 for(int i=1;i<=5;++i)22 if(map[i][1]==ch&&map[i][2]==ch&&map[i][3]==ch&&map[i][4]==ch&&map[i][5]==ch)23 sum+=5;24 for(int i=1;i<=5;++i)25 if(map[1][i]==ch&&map[2][i]==ch&&map[3][i]==ch&&map[4][i]==ch&&map[5][i]==ch)26 sum+=5;27 if(map[1][5]==ch&&map[2][4]==ch&&map[3][3]==ch&&map[4][2]==ch&&map[5][1]==ch)28 sum+=5;29 if(map[1][1]==ch&&map[2][2]==ch&&map[3][3]==ch&&map[4][4]==ch&&map[5][5]==ch)30 sum+=5;31 return sum;32 }33 int sixie(char ch) {34 int sum=0;35 if(map[1][4]==ch&&map[2][3]==ch&&map[3][2]==ch&&map[4][1]==ch)36 sum+=4;37 if(map[2][1]==ch&&map[3][2]==ch&&map[4][3]==ch&&map[5][4]==ch)38 sum+=4;39 if(map[2][5]==ch&&map[3][4]==ch&&map[4][3]==ch&&map[5][2]==ch)40 sum+=4;41 if(map[1][2]==ch&&map[2][3]==ch&&map[3][4]==ch&&map[4][5]==ch)42 sum+=4;43 return sum;44 }45 int sanxie(char ch) {46 int sum=0;47 if(map[1][3]==ch&&map[2][2]==ch&&map[3][1]==ch)48 sum+=3;49 if(map[3][1]==ch&&map[4][2]==ch&&map[5][3]==ch)50 sum+=3;51 if(map[3][5]==ch&&map[4][4]==ch&&map[5][3]==ch)52 sum+=3;53 if(map[1][3]==ch&&map[2][4]==ch&&map[3][5]==ch)54 sum+=3;55 return sum;56 }57 int xiaodou(char ch) {58 int sum=0;59 for(int i=1;i<=4;++i)60 for(int j=1;j<=4;++j)61 if(map[i][j]==ch&&map[i][j+1]==ch&&map[i+1][j]==ch&&map[i+1][j+1]==ch)62 sum+=1;63 return sum;64 }65 int main() {66 int T;67 scanf("%d",&T);68 while(T--) {69 int ans1=0,ans2=0;70 for(int i=1;i<=5;++i)71 scanf("%s",map[i]+1);72 ans1=bigtiger('x')+tiger('x')+tongtian('x')+sixie('x')+sanxie('x')+xiaodou('x');73 ans2=bigtiger('o')+tiger('o')+tongtian('o')+sixie('o')+sanxie('o')+xiaodou('o');74 printf("%d %d\n",ans1,ans2);75 }76 return 0;77 }