曼哈顿距离
曼哈顿距离是指对于两个点 a ( i , j ) , b ( i ′ , j ′ ) a(i,j),b(i',j') a(i,j),b(i′,j′),它们的曼哈顿距离是 ∣ i − i ′ ∣ + ∣ j − j ′ ∣ |i-i'|+|j-j'| ∣i−i′∣+∣j−j′∣,记为 d i s ( a , b ) dis(a,b) dis(a,b)
我们显然可以做如下变化
d i s ( a , b ) = ∣ i − i ′ ∣ + ∣ j − j ′ ∣ = max ( i − i ′ , i ′ − i ) + max ( j − j ′ . j ′ − j ) dis(a,b)=|i-i'|+|j-j'|=\max(i-i',i'-i)+\max(j-j'.j'-j) dis(a,b)=∣i−i′∣+∣j−j′∣=max(i−i′,i′−i)+max(j−j′.j′−j)
这是因为 a b s abs abs函数的性质,两个数一非正一非负,就相当于取 max \max max
两个最大值,做笛卡尔积一共可以产生四种情况,加号可以直接拆开,得到
d i s ( a , b ) = max ( i − i ′ + j − j ′ , i − i ′ + j ′ − j , i ′ − i + j − j ′ , i ′ − i + j ′ − j ) = max ( ( i + j ) − ( i ′ + j ′ ) , ( i − j ) − ( i − j ′ ) , − ( i − j ) + ( i ′ − j ′ ) , − ( i + j ) + ( i ′ + j ′ ) ) = max ( ∣ ( i + j ) − ( i ′ + j ′ ) ∣ , ∣ ( i − j ) − ( i − j ′ ) ∣ ) \begin{aligned} dis(a,b) &= \max(i-i'+j-j',i-i'+j'-j,i'-i+j-j',i'-i+j'-j)\\ &= \max((i+j)-(i'+j'),(i-j)-(i-j'),-(i-j)+(i'-j'),-(i+j)+(i'+j'))\\ &=\max(|(i+j)-(i'+j')|,|(i-j)-(i-j')|)\\ \end{aligned} dis(a,b)=max(i−i′+j−