题目链接:点击打开链接
题目大意:略。
解题思路:注意:将 MIN() 放在 SQRT() 里面会轻微提高性能;解决方案(2)中,因为有一部分是会重复的(笛卡儿积),所以取其中一边进行计算即可。
AC 代码
--解决方案(1) SELECTCAST(SQRT(MIN(POW(p1.x-p2.x, 2) +POW(p1.y-p2.y, 2))) ASDECIMAL(7, 2)) shortestFROMpoint_2dp1, point_2dp2WHERE!(p1.x=p2.xANDp1.y=p2.y) --解决方案(2) SELECTt1.x, t1.y, t2.x, t2.y, SQRT((POW(t1.x-t2.x, 2) +POW(t1.y-t2.y, 2))) ASdistanceFROMpoint_2dt1JOINpoint_2dt2ON (t1.x<=t2.xANDt1.y<t2.y) OR (t1.x<=t2.xANDt1.y>t2.y) OR (t1.x<t2.xANDt1.y=t2.y);