洛谷P1434 滑雪 記憶化搜尋

2022-06-26 03:21:14 字數 1055 閱讀 2786

題目

題意:

給乙個矩陣,矩陣中的數字代表海拔高度。

現在要找一條最長路徑,使得路徑上的海拔是遞減的。

思路:

如果從點(i,j)出發的最長遞減路徑已知(假設是s),那麼如果從點(x,y)可以到達點(i,j),路徑s一定也包含在從點(x,y)出發的最長遞減路徑中。

因此我們用乙個陣列記錄從某一點開始的最長遞減路徑的長度,進行搜尋。

1 #include2 #include3 #include4 #include

5 #include6 #include7 #include8 #include9 #include10

11using

namespace

std;

12 typedef long

long

ll;13 typedef pairpr;

1415

intr, c;

16int height[105][105

];17

int lane[105][105

]; 18

int dx[4] = ;

19int dy[4] = ;

2021

bool check(int x, int

y)22

2526

void dfs(int i, int

j)27

37 ans = max(ans, lane[x][y] + 1

);38}39

}40 lane[i][j] =ans;

41return;42

}4344int

main()

4551}52

53int ans = 0;54

for(int i = 1; i <= r; i++)59}

60 printf("

%d\n

", ans);

61return0;

62 }

洛谷 P1434 滑雪 dfs 記憶化搜尋

記憶化搜尋 和斐波那契數列一樣搜尋過的直接用陣列打表儲存下來,記錄下來。首先,這題為什麼會想到記憶化?在dfs每種情況是,可能這個點之前已經搜過了,沒必要再去搜尋了,因此不如儲存記住,就沒必要再去dfs了。本題的主要思路 先去想dfs怎麼做 這題每個點出發有可能,所以我們每個點都要開始dfs,最後取...

搜尋 洛谷 P1434滑雪

michael喜歡滑雪。這並不奇怪,因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待公升降機來載你。michael想知道在乙個區域中最長的滑坡。區域由乙個二維陣列給出。陣列的每個數字代表點的高度。下面是乙個例子 1 2 3 4 5 16 17 ...

洛谷 P1434 滑雪

題目描述 michael喜歡滑雪。這並不奇怪,因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待公升降機來載你。michael想知道在乙個區域中最長的滑坡。區域由乙個二維陣列給出。陣列的每個數字代表點的高度。下面是乙個例子 1 2 3 4 5 1...