給乙個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...