八皇后问题是经典的搜索问题,其他文章已经有了很多详细的介绍,本文就不再介绍。本文主要讨论的内容是如何判断是否两个点在同以直线上。
假设一个点
A
A
A的坐标是
[
a
,
b
]
[a,b]
[a,b],那么和该点在同一斜线上的点
A
′
A^{'}
A′有四种,分别是
[
a
+
x
,
b
+
x
]
、
[
a
−
x
,
b
−
x
]
、
[
a
+
x
,
b
−
x
]
、
[
a
−
x
,
b
+
x
]
[a+x,b+x]、[a-x,b-x]、[a+x,b-x]、[a-x,b+x]
[a+x,b+x]、[a−x,b−x]、[a+x,b−x]、[a−x,b+x]。
前两种点横纵坐标相减和A点横纵坐标相减后一样。后两种点横纵坐标相加和A点横纵坐标相加一样。
(
a
+
x
)
−
(
b
+
x
)
=
a
−
b
(a+x)-(b+x) = a-b
(a+x)−(b+x)=a−b
(
a
−
x
)
−
(
b
−
x
)
=
a
−
b
(a-x)-(b-x) = a-b
(a−x)−(b−x)=a−b
(
a
+
x
)
+
(
b
−
x
)
=
a
+
b
(a+x)+(b-x) = a+b
(a+x)+(b−x)=a+b
(
a
−
x
)
+
(
b
+
x
)
=
a
+
b
(a-x)+(b+x) = a+b
(a−x)+(b+x)=a+b
因此,根据这个我们就可以很方便的判断两个点知否在同一斜线上。只要两个点横纵坐标相加结果相等或者相减结果相等,就可以判断两个点在同一斜线上。