• hdu 3368 曾经下过的棋


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3368

    就是讲一种下棋的方法,很多人小时候也应该玩过,输入8*8的矩阵代表棋盘,*代表空位

    D代表黑子,L代表白子,现在你手里只有一颗黑子,问你把这颗黑子放在哪里能够吃掉最多的白子

    当一个方向上(斜方向也算)首尾都是黑子的时候它中间的白子当然就会被吃掉。

    因为只有8*8的大小,所以可以枚举每一个棋子的八个方向统计能够吃多少个白子,类似于DFS

    起初想的是枚举每个黑子,但是后来发现了漏掉了类似于D L L * L L D的情况 而且要改貌似有点麻烦

                                                                                   L L L

                                                                                D   D    D

    索性就换成了枚举每个*的位置 这样的好处是不会漏掉特殊情况,也比较简短

     1 #include<cstdio>
     2 #include<cstring>
     3 using namespace std;
     4 int yi[8][2]={{1,1},{1,0},{1,-1},{0,1},{0,-1},{-1,1},{-1,0},{-1,-1}};  //列举八个方向
     5 char map[10][10];
     6 int x,y,sum,m,i,j,k;
     7 void dfs(int s)
     8 {
     9     if (x<0||x>8||y<0||y>8||map[x][y]=='*')  return ;
    10     if (map[x][y]=='L')  {s++; }  //统计这一个方向白子的个数
    11     if (map[x][y]=='D')  {m+=s; return ;} //每个方向上的个数加在一起
    12     x=x+yi[k][0];
    13     y=y+yi[k][1];
    14     dfs(s);
    15 }
    16 int main()
    17 {
    18     int n,cut=0;
    19     scanf("%d",&n);
    20     while (n--)
    21     {
    22         cut++;
    23         sum=0;
    24         for (i=0;i<8;i++)
    25         scanf("%s",&map[i]);
    26         for (i=0;i<8;i++)
    27         for (j=0;j<8;j++)
    28         {
    29             m=0;
    30             if (map[i][j]=='*')
    31             {
    32                 for (k=0;k<8;k++)
    33                 {
    34                     x=i+yi[k][0];//枚举八个方向
    35                     y=j+yi[k][1];
    36                     dfs(0);
    37                 }
    38             }
    39             if (m>sum) sum=m;
    40         }
    41         printf("Case %d: %d
    ",cut,sum);
    42     }
    43     return 0;
    44 }

      

  • 相关阅读:
    Graphic
    GUI编程实战
    Swing 混合布局
    运算符与数据库函数
    mysq基础操作
    mysql常见问题处理
    static 与final abstract关键字
    JAVA面试
    Swing
    AWT的应用
  • 原文地址:https://www.cnblogs.com/JJCHEHEDA/p/4664879.html
Copyright © 2020-2023  润新知