直接暴力枚举
三种情况:
-
B
,
L
B,L
B,L不在同一行同一列
- 如果为同一行或者同一列并且
R
R
R在
B
,
L
B,L
B,L之间
- 如果为同一行或者同一列并且R在
B
,
L
B,L
B,L之外
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int ans,x1,y1,x2,y2,x3,y3;
char a[15][15];
int abs2(int m, int n)
{
if(m>n)
return m-n;
return n-m;
}
int main()
{
freopen("buckets.in","r",stdin);
freopen("buckets.out","w",stdout);
for(int i=1; i<=10; i++)
for(int j=1; j<=10; j++)
{
cin>>a[i][j];
if(a[i][j]=='B')
{
x1=i;
y1=j;
}
if(a[i][j] == 'R')
{
x2=i;
y2=j;
}
if(a[i][j] == 'L')
{
x3=i;
y3=j;
}
}
if(((x1==x2&&x2==x3)||(y1==y2&&y2==y3))&&(((x2-x1)*(x2-x3)<0)||((y2-y1)*(y2-y3)<0)))
ans=abs2(x1,x3)+abs2(y1,y3)+1;
else if(((x1==x2&&x2==x3)||(y1==y2&&y2==y3))&&(((x2-x1)*(x2-x3)>0)||((y2-y1)*(y2-y3)>0)))
ans=abs2(x1,x3)+abs2(y1,y3)-1;
else
ans=abs2(x1,x3)+abs2(y1,y3)-1;
cout<<ans;
return 0;
}