兩個矩陣中的dp題的差異

2022-05-01 21:51:07 字數 1243 閱讀 4576

給定乙個由 0 和 1 組成的矩陣,找出每個元素到最近的 0 的距離。

分析:很容易想到dp[i][j] = min(dp[i-1][j], dp[i][j+1], dp[i+1][j], dp[i][j-1]),出口是若m[i][j] = 0,則dp[i][j]=0。但是有個問題,兩個相鄰的1,求當前值需要知道另乙個,求另乙個需要當前值,這樣不無限迴圈了嗎。

仔細想乙個,我們可以加乙個序。離當前1最近的0只可能出現在四個象限,可以分別求出每個象限的(有了秩序),再取min.

class

solution

int dp(int x, int y, vectorint>>&d, vectorint>>&matrix)

, dy = ;

int n = matrix.size(), m = matrix[0

].size();

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

}return

res;}};

view code

分析:同樣是四個方向取min,但是這裡不需要考慮相互依賴,因為本身就有遞增的限制。出口就是區域性最大值,其最大路徑長度為1.

class

solution

return

ans;

}//dp[i][j] 表示以(i,j)開始的最長遞增路徑長度

int dfs(int x, int y, vectorint>>& dp, vectorint>>&matrix)

, dy = ;

int n = matrix.size(), m = matrix[0

].size();

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

}return

res;}};

view code

分析:給定了起點和終點,直接用bfs求最短路即可。

class

solution

};int shortestpathbinarymatrix(vectorint>>&grid)

//cout << p.first << " " << p.second.x << " " << p.second.y << endl;

int dx = ;

int dy = ;

for(int i = 0;i < 8;i++)}}

return -1

; }

};

view code

python比較兩個檔案的差異

轉 使用python指令碼比較兩個檔案的差異內容並輸出到html文件中,可以通過瀏覽器開啟檢視。一 指令碼使用 對比nginx配置檔案的差異 python python diff file.py f1 web26.conf f2 web103.conf 二 指令碼內容 usr bin python ...

使用shell比較兩個文字的差異

一般工作中會遇到比較兩個文字檔案的不同,類似於第二天新增資料 或者修改資料統計。我查閱資料查到一下兩種方法。說明 1 2 為要比較的兩個文字檔案 此處使用引數代替 1 grep f v f 1 2 sort uniq f 範本檔案 或 file 範本檔案 指定範本檔案,其內容含有乙個或多個範本樣式,...

矩陣中的DP題 放象棋

題目的意思很簡單 在n m的矩陣中放置若干個炮 可以不放 使得沒有乙個炮可以攻擊另外乙個炮。炮的攻擊方式就不用多說了。答案mod 9999973。這個題目一開始我想得很接近了,但沒想到用dp,覺得是組合數學。首先可以把問題轉化一下 沒有一列或一行有兩個以上的炮,這樣炮於炮之間就不能攻擊了。也就是說,...