浙江广厦大学第七届程序设计比赛 B-小马喝水

41 阅读1分钟

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;
}

正解

把小马映射到河的另一边,直接与操场连一条直线,接下来就是求两点间的距离.

套用公式

intdist=(x2x2)2+(y2y1)2int dist= \sqrt{(x2-x2)^{2} + (y2-y1)^{2}}

image.png

#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;
}