題目:
題意:
給乙個矩陣,矩陣中的數字代表海拔高度。
現在要找一條最長路徑,使得路徑上的海拔是遞減的。
思路:
如果從點(i,j)出發的最長遞減路徑已知(假設是s),那麼如果從點(x,y)可以到達點(i,j),路徑s一定也包含在從點(x,y)出發的最長遞減路徑中。
因此我們用乙個陣列記錄從某一點開始的最長遞減路徑的長度,進行搜尋。
1 #include2 #include3 #include4 #include5 #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...