Hdu 3368 Reversi(暴力)

来源:互联网 发布:歌曲消音伴奏软件 编辑:程序博客网 时间:2024/05/22 08:07

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

思路:枚举所有可以下的点,每个点从8个方向进行寻找每个方向上的下一个黑子,得到该点能翻转的白棋数,比较取最大值。

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int dx[]= {0,1,1,1,0,-1,-1,-1};const int dy[]= {1,1,0,-1,-1,-1,0,1};int t,ans=0,num;char g[15][15];int solve(int x,int y){    for(int k=0; k<8; k++)    {        int tmp=0;        int xx=x+dx[k];        int yy=y+dy[k];        while(g[xx][yy]=='L')        {            tmp++;            xx+=dx[k],yy+=dy[k];        }        if(g[xx][yy]=='D') num+=tmp;    }    return num;}int main(){   // freopen("in.txt","r",stdin);    int cas=0;    scanf("%d",&t);    while(t--)    {        ans=0;        for(int i=1; i<=8; i++)            for(int j=1; j<=8; j++)                scanf(" %c",&g[i][j]);        //getchar();        for(int i=1; i<=8; i++)            for(int j=1; j<=8; j++)                if(g[i][j]=='*')                {                    num=0;                    ans=max(ans,solve(i,j));                }        printf("Case %d: %d\n",++cas,ans);    }    return 0;}


0 0
原创粉丝点击