<==麻烦大佬们点这个
呼!这次中午来打题解,虽然晚了点,但也还算赶得上
感谢大家观看我的题解!
特判能行的题为啥要用特殊方法?
思路:
- 如果三个点在同一列,并且石头在中间,那么路程要多两个
abs(c.x-b.x)+1(abs的原因是因为牛棚和水的位置不固定) - 如果三个点在同一行,并且石头在中间,路程同样多两个
abs(c.y-b.y)+1 - 否则不管石头怎样碍你,都只需要直走拐弯直走
abs(c.x-b.x)+abs(c.y-b.y)-1(减一是因为挨着牛棚就行了)
贴上代码:
#include<bits/stdc++.h>
using namespace std;
char s;
struct o{
int x,y;
}a,b,c;
int main(){
for(int i=1;i<=10;i++)
for(int j=1;j<=10;j++){
cin>>s;
if(s=='R')
a={i,j};
if(s=='B')
b={i,j};
if(s=='L')
c={i,j};
}
if(a.y==b.y&&b.y==c.y&&min(b.x,c.x)<a.x&&max(b.x,c.x)>a.x)
cout<<abs(c.x-b.x)+1;
else if(a.x==b.x&&b.x==c.x&&min(b.y,c.y)<a.y&&max(b.y,c.y)>a.y)
cout<<abs(c.y-b.y)+1;
else
cout<<abs(c.x-b.x)+abs(c.y-b.y)-1;
return 0;
}
最后祝大家工作顺利,学业进步,早日脱单,健健康康。我的演讲到此结束,谢谢大家~(听说你还没点赞,点完再走)