Wannafly挑战赛4 C 割草机

注意题意,下来一格方向就要改变!!!!!!!

只考虑左右,上下最后一块加=,=  好好读题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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值