HDU 3368 Reversi

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

放一顆黑棋最多能把幾個白棋變成黑棋,,兩個黑棋之間的白棋會變爲黑棋;

一共64個格子,可以用暴力每個搜一遍,,,注意是8個方向...

代碼如下:

#include<bits/stdc++.h>
using namespace std;
char a[10][10];
int dfs(int zx,int zy)
{
    int x[]= {0,1,0,-1,1,-1,1,-1};
    int y[]= {1,0,-1,0,-1,1,1,-1};
    int xx,yy;
    int sum=0;
    for(int i=0; i<8; i++)
    {
        xx=zx+x[i];
        yy=zy+y[i];
        int num=0;
        while(a[xx][yy]=='L')
        {
            num++;
            xx+=x[i];
            yy+=y[i];
        }
        if(a[xx][yy]=='D')
            sum+=num;
    }
    return sum;
}
int main()
{
    int times=0,T;
    scanf("%d",&T);
    for(int z=1; z<=T; z++)
    {
        for(int i=1; i<=8; i++)
            for(int j=1; j<=8; j++)
                scanf(" %c",&a[i][j]);
        int maxn=0;
        for(int i=1; i<=8; i++)
            for(int j=1; j<=8; j++)
                if(a[i][j]=='*')
                    maxn=max(maxn,dfs(i,j));
        printf("Case %d: %d\n",z,maxn);
    }
    return 0;
}

發佈了67 篇原創文章 · 獲贊 24 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章