• 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 }
  • 相关阅读:
    [Json.net]忽略不需要的字段
    [c#]exchange回复,全部回复,转发所遇到的问题
    [c#]获取exchange中的图片
    [c#基础]AutoResetEvent
    [C#基础]c#中的BeginInvoke和EndEndInvoke
    [CentOs7]安装mysql
    [CentOS7]安装mysql遇到的问题
    [CentOs7]图形界面
    [CentOS]添加删除用户
    在虚机中安装CentOS
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3076372.html
Copyright © 2020-2023  润新知