CF 115B. Lawnmower
http://www.codeforces.com/problemset/problem/115/B
贪心。由于每次必须将整行的走完,而且不能变换方向,由此可知每次都是走极端。
非常好的题。每次必须从端点开始扫。
偶数行(0也算)从左开始
奇数行从右开始往左扫。记录上一次的位置。坐标绝对值之差即为距离。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m)
{
int i,j;
char g[155][155];
for(i=0;i<n;i++)
cin>>g[i];
int x=0,y=0,s=0;
for(i=0;i<n;i++)
{
if(i%2==0)j=0;
else j=m-1;
for(;j>=0 && j<m;)
{
if(g[i][j]=='W')
{
s+=abs(i-x)+abs(j-y);
x=i;
y=j;
}
if(i%2==0)j++;
else j--;
}
}
cout<<s<<endl;
}
return 0;
}