警察距離 LintCode

2021-08-19 14:31:37 字數 1256 閱讀 7399

給乙個n x m的矩陣,裡面的值1代表那個位置站了乙個警察,-1代表是牆,0代表是空地。

現在請你輸出乙個n x m矩陣,輸出每乙個空地到離他最近的警察的距離。

注意事項

給的n x m 的矩陣, n <=200,m <= 200。

保證每個空地都至少能走到乙個警察。

樣例

給出 mat =

[

[0,-1,0],

[0,1,1],

[0,0,0]

]

返回[[2,-1,1],[1,0,0],[2,1,1]]。

警察到警察自身的距離都是0,這2個警察到其他空地的最近距離如上所示。

給出 mat =

[

[0,-1,-1],

[0,-1,1],

[0,0,0]

]

返回[[5,-1,-1],[4,-1,0],[3,2,1]]。

警察到5個空地的最近距離如上所示。

思路 從每個警察位置開始處理上下左右四個位置,警察位置的值為0,上下左右(不包括警察位置)的值為1。遍歷所有值為1的位置,其上下左右四個位置的值為1+1=2。依次類推,直到每個位置都被訪問到。

#ifndef c1367_h

#define c1367_h

#include

#include

#include

using

namespace

std;

class solution , , , };

//先存放警察位置和牆的位置

for (int i = 0; i < rows; ++i)

else

if (matrix[i][j] == -1)

visited[i*cols + j] = -1;}}

//從警察位置開始處理其周圍位置的值

int num = 0;

while (visited.size() < cnt)

return matrix;

}//在visited中尋找所有值為num的位置,並遍歷其上下左右四個位置,設定值為num+1

void helper(vector

> &matrix, vector

> dic, map

&visited, int num)}}

}}

};#endif

LintCode 編輯距離

你總共三種操作方法 返回 3 思路 使用dp,先定義狀態 f i j 單詞1 的前i個 跟 單詞2 的前j個 的最短編輯距離。如果 a i b j 那麼f i,j f i 1,j 1 然後,再看有三種狀態 1.增加乙個 等價於 f i,j 1 2.刪除乙個 等價於 f i 1,j 3.修改乙個 等價...

lintcode練習 119 編輯距離

給出兩個單詞word1和word2,計算出將word1 轉換為word2的最少操作次數。你總共三種操作方法 給出 work1 mart 和 work2 karma 返回 3 當i 0時,dp 0,j j,j 0.len word2 表示word2需要刪除j位來使其與word1相同為空 同理當j 0,...

Lintcode 008 編輯距離)

2016 08 29 給出兩個單詞word1和word2,計算出將word1 轉換為word2的最少操作次數。你總共三種操作方法 樣例 給出 work1 mart 和 work2 karma 返回 3 標籤 動態規劃 解題 此題為典型的動態規劃問題,可以按照一般解題思路解決。首先定義這樣乙個函式 e...