最長遞增路徑(YYOJ)

2021-10-04 12:58:25 字數 1202 閱讀 9971

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,...

矩陣中的最長遞增路徑

矩陣中的最長遞增路徑 給定乙個整數矩陣,找出最長遞增路徑的長度。對於每個單元格,你可以往上,下,左,右四個方向移動。你不能在對角線方向上移動或移動到邊界外 即不允許環繞 題解 首先看到這道題,突然想到島嶼那題,每次向著四個方向不斷遞迴 只是條件是只遞迴比當前數大的數,所以使用深度搜尋,並且返回搜尋中...