題目鏈接: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;
}