給定乙個由 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.
classview codesolution
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;}};
分析:同樣是四個方向取min,但是這裡不需要考慮相互依賴,因為本身就有遞增的限制。出口就是區域性最大值,其最大路徑長度為1.
classview codesolution
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;}};
分析:給定了起點和終點,直接用bfs求最短路即可。
classview codesolution
};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
; }
};
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,覺得是組合數學。首先可以把問題轉化一下 沒有一列或一行有兩個以上的炮,這樣炮於炮之間就不能攻擊了。也就是說,...