程序员面试金典——7.3判断直线相交
Solution1:我的答案,虽然能AC,但不是很讲究,吸收教训
class CrossLine {
public:
bool checkCrossLine(double s1, double s2, double y1, double y2) {
// write code here
if(s1 == s2 && y1 == y2)//两条直线重合
return true;
else if( s1 == s2 && y1 != y2) //两条直线平行
return false;
else //两条直线相交
return true;
}
};
Solution2:
参考网址:https://www.nowcoder.com/profile/4492022/codeBookDetail?submissionId=12709650
了解浮点表示法的限制。切记不要用==检查浮点数是否相等,而是应该检查两者差值是否小于某个极小值,例如1e-6。
class CrossLine {
public:
bool checkCrossLine(double s1, double s2, double y1, double y2) {
// write code here
if (abs(s1-s2)>1e-6)
return true;
else if (abs(y1-y2)<1e-6)
return true;
else
return false;
}
};