B-小马喝水_浙江广厦大学第七届程序设计比赛 (nowcoder.com) 我刚开始是想着从小马位置向河边作一条垂线,与河边有个交点,小马就先去这个点,再从这个点去操场
#include<bits/stdc++.h>
using namespace std;
int main()
{
int x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;
int x3=x1,y3=0;
int dist1=abs(x1-x3)+abs(y1-y3);
int dist2=abs(x3-x2)+abs(y3-y2);
cout<<dist1+dist2;
return 0;
}
正解
把小马映射到河的另一边,直接与操场连一条直线,接下来就是求两点间的距离.
套用公式
#include<bits/stdc++.h>
using namespace std;
int main()
{
int x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;
y2=-y2;
cout<<(int)sqrt(pow(y2-y1,2.0) + pow(x2-x1,2.0));
return 0;
}