description
給定乙個整數矩陣,找出最長遞增路徑的長度。
對於每個單元格,你可以往上,下,左,右四個方向移動。 你不能在對角線方向上移動或移動到邊界外。
input
測試樣例由多組測試資料組成。每組測試資料第一行輸入兩個正整數n,m代表矩形的行數和列數( 1 <= n,m <= 500 )
接下來輸入n * m 個數,每個數均在int範圍內。
輸出矩陣中的最長遞增路徑長度。
sample input
3 39 9 4
6 6 8
2 1 1
sample output
**
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
long
long n,m;
long
long dp[
505]
[505];
long
long s[
505]
[505];
int dir[4]
[2]=
;int
dfs(
int x,
int y)
}return
++dp[x]
[y];
}int
main()
}int ans=0;
for(
int i=
0;icout << ans << endl;
}return0;
}
思路
每個位置都是可以向上下左右都可以移動的(但是只能向比自己大的方向移動
例9 8 7|.|1 2 3
6 5 4|.|2 3 4
3 2 1|.|3 4 5
輸出 5
利用dp陣列儲存資料,再次使用時可以直接呼叫不需要再重複計算
最長遞增路徑
乙個無向圖,可能有自環,有重邊,每條邊有乙個邊權。你可以從任何點出發,任何點結束,可以經過同乙個點任意次。但是不能經過同一條邊2次,並且你走過的路必須滿足所有邊的權值嚴格單調遞增,求最長能經過多少條邊。以此圖為例,最長的路徑是 3 1 2 3 2 或 3 1 2 3 4 長度為4。input 第1行...
最長遞增路徑(多解)
給定乙個整數矩陣,找出最長遞增路徑的長度。對於每個單元格,你可以往上,下,左,右四個方向移動。你不能在對角線方向上移動或移動到邊界外 即不允許環繞 示例 1 輸入 nums 9,9,4 6,6,8 2,1,1 輸出 4 解釋 最長遞增路徑為 1,2,6,9 示例 2 輸入 nums 3,4,5 3,...
矩陣中的最長遞增路徑
矩陣中的最長遞增路徑 給定乙個整數矩陣,找出最長遞增路徑的長度。對於每個單元格,你可以往上,下,左,右四個方向移動。你不能在對角線方向上移動或移動到邊界外 即不允許環繞 題解 首先看到這道題,突然想到島嶼那題,每次向著四個方向不斷遞迴 只是條件是只遞迴比當前數大的數,所以使用深度搜尋,並且返回搜尋中...