回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个2D数组,比如</p>
<pre><code> grid = [[1, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
</code></pre>
<p>现在,基于存在<code>1</code>的点,我想创建一个新数组,并保存到所有点的距离。范例</p>
<pre><code>dp = [[1, 2, 3, 4, 5],
[2, 3, 4, 5, 6],
[3, 4, 5, 6, 7]]
</code></pre>
<p>我不知道我错过了什么</p>
<pre><code>def minTotalDistance(grid):
dp = [[0]*len(grid[0]) for _ in range(len(grid))]
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == 1:
dfs(i, j, dp, 1)
print dp
def dfs(i, j, dp, val):
if i < 0 or i >= len(dp) or j < 0 or j >= len(dp[0]):
return 0
dp[i][j] = val
dfs(i - 1, j, dp, val+1)
dfs(i + 1, j, dp, val+1)
dfs(i, j - 1, dp, val+1)
dfs(i, j + 1, dp, val+1)
grid = [[1, 0, 0, 0, 1], [0, 0, 0, 0, 0], [0, 0, 1, 0, 0]]
minTotalDistance(grid)
</code></pre>