2013“嘉杰信息”杯ACM/ICPC湘潭多省程序设计竞赛暨湘潭市第五届大学生程序设计竞赛 F题 five tiger 湘潭大学1173题...

解题报告:

题目大意:五虎棋是一种棋,规则这里就不说了,现在给出一种一种棋盘的局面图,问题是分别求出两方所得到的分数。

模拟题,我是直接暴力将每种情况都枚举出来,先定义一个map[][]数组,将棋盘局面存起来,然后对每一种可以得分的方案进行判断,因为数据量不大,一共就25个点。代码可能会有点长。。。。。

View Code
 1 #include<stdio.h>
 2 #include<string.h>
 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 }

 

 

转载于:https://www.cnblogs.com/xiaxiaosheng/archive/2013/05/13/3076372.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值