【发布时间】:2019-01-10 08:03:23
【问题描述】:
给定一个大小为(n*m)的matrix A,对于所有i,j,我们有aij=1或aij=0,如果aij=1我们称之为“黑色”,否则“白色”,两点之间的距离p(i,j) 和 q(k,l) 定义如下:
d(p,q)=|i-k|+|j-l|.
是否有任何算法及时运行O(mn) 来为所有白点找到一个白点及其最近的黑点?
dp1[i][j] = min(dp1[i-1][j], dp1[i][j-1],dp[i-1][j-1]+1)+1 if A[i][j]=1 else 0
dp2,dp3,dp4 are similar
res[i][j] = min(dp1[i][j], dp2[i][j], dp3[i][j], dp4[i][j])
here are my code, I cannot guarantee correctness
【问题讨论】:
-
我发现问题中的语言令人困惑。您的意思是“是否有运行时间为 O(mn) 的算法可以为所有白点 i,j 找到最接近 i,j 的黑点?”?如果是这样,那与“最短路径”有什么关系?
-
是的!你的表情比我好。
标签: shortest-path