如果你用 (y2-y1)/(x2-x1) 计算斜率并比较,一定要让后面的那个点减去前面那个点,否则如果这是一条垂直的线,用前-后可能出现斜率为 负数/(1e-18) = -inf,导致出错
double k(int p1,int p2){
double xp1=sc[p1];
double xp2=sc[p2];
double yp1=f[p1]-t0*sc[p1];
double yp2=f[p2]-t0*sc[p2];
return (yp1-yp2)/((xp1==xp2)?1e-18:xp1-xp2);
}
55pts
double k(int p1,int p2){
double xp1=sc[p1];
double xp2=sc[p2];
double yp1=f[p1]-t0*sc[p1];
double yp2=f[p2]-t0*sc[p2];
return (yp2-yp1)/((xp1==xp2)?1e-18:xp2-xp1);
}
100pts(另一种做法的 y 和 k 与代码中的不同)