Base
当:斜率k可能是小数 或 截距b可能是小数时
其实,我们仍可以用double来存直线!!
但是需要设置一个eps精度!! 只要小于误差,就当做是:double值相同
' 注意, 垂直线的斜率 不存在!! 所以,对垂直线(甚至平行线k==0)的 都特殊处理 '
vector< pair<double, double> > A;
A.PB( {
k, b} ); ' 放入:斜率 和 截距 '
sort(A.begin(), A.end());
for(i, 0, n-1, 1){
if(i == 0) ++ ans;
else{
if( DB_EQUAL(A[i].FIR, A[i-1].FIR) &&
DB_EQUAL(A[i].SEC, A[i-1].SEC)
continue;
++ ans;
} // DE_EQUAL(a,b){ return fabs(a-b) <= EPS; }
' 1, 两个double的差,比eps还小。 说明,他俩可以看做是相同的 '
'