注意题意,下来一格方向就要改变!!!!!!!
只考虑左右,上下最后一块加=,= 好好读题Orz Orz Orz, 因为误解题意 卡%80 好长时间(╥╯^╰╥);
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
char a[200][200];
int sto[200][3];
int main()
{
int m,n,flag,k,ans,l,r;
while (scanf("%d%d",&m,&n)!=EOF)
{
for (int i=1;i<=m;i++)
scanf("%s",a[i]+1);
memset(sto,0,sizeof(sto));
ans=k=0;
for (int i=1;i<=m;i++)
{
flag=1;
for (int j=1;j<=n;j++)
{
if (a[i][j]=='W'&&flag)
{
sto[i][1]=j;
flag=0;
}
if (a[i][j]=='W')
{
sto[i][2]=j;
sto[i][3]=1;
k=i;
}
}
}
l=r=1;
for (int i=1;i<=k;i++) //从第一行一直到有草的最后一行
{
if (i%2!=0)
{
r=l;
if (sto[i][2]) r=max(sto[i][2],r);
if (i+1<=k) r=max(r,sto[i+1][2]);
ans+=(r-l);
}
else
{
l=r;
if (sto[i][1]) l=min(sto[i][1],l);
if (i+1<=k&&sto[i+1][3]) l=min(l,sto[i+1][1]);
ans+=(r-l);
}
}
if (k==0) printf("0\n");
else printf("%d\n",ans+k-1);
}
return 0;
}