警示后人(55 pts)
查看原帖
警示后人(55 pts)
542457
cff_0102楼主2024/9/11 19:04

如果你用 (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 与代码中的不同)

2024/9/11 19:04
加载中...