題目描述:
input
第一行輸入兩個數n,m代表滑梯範圍行n和列m(1 <= n,m <= 100)。下面是n行,每行有m個整數,代表高度h,(0<=h<=20000)
output
輸出乙個值,代表glory能夠在滑滑梯上面滑行的最長長度是多少
sample input
3 39 1 2
5 6 7
8 4 3
sample output
sample input
4 77 6 5 4 3 2 1
1 5 1 1 1 1 1
1 4 3 1 1 1 1
1 5 6 7 8 1 1
sample output
hint
樣例1:7->6->4->3 長度為4
面向題解的思路:
我覺得有點類似於求連通區域個數的問題,因為都是在一塊地圖上走嘛。
記錄的目的是為了防止超時。
陣列dp中存放的就是每個點所能夠走的最遠距離。
過程主要是記錄某個點能夠到達的最長的長度。然後由某乙個點向四個方向延伸,到達某點的時候,如果這點已經遍歷過的話,就直接返回值就行了,否則就由這一點去遍歷。
**:
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include8 #include 9 #include 10 #include 11 #include
12 #include 13 #include 14
15#define n 100010
1617
using
namespace
std;
1819 typedef long
long
intll;
20int
n, m;
21int rec[110][110
];22
int grap[110][110
];23
int dx[4]=; int dy[4]=;
2425
bool torf(int i, int
j)28
//找距離此點的最遠距離
29int find_max(int i, int
j)43}44
return rec[i][j]=maxl+1; //
能夠走的最遠距離加上本身45}
46int
main()
4755}56
int ans=int_min;
57for(i=0; i)61}
62 printf("
%d\n
", ans);
63return0;
64 }
POJ1088 滑雪(簡單dp
題目要求 乙個人可以從某個點滑向上下左右相鄰四個點之一,當且僅當高度減小。求可以滑落的最長長度。題目解析 首先要先排一下序,因為只能高度遞減才能滑行。之後就很簡單了,就是簡單dp。即 要求的滑坡是一條節點遞減並依次相鄰的最長路徑,可以先根據高度將所有的點進行排序,在i點的時候,遍歷0 i 1個點 公...
POJ1088 滑雪 DP,查表法
dp 查表法 查表法的前提 1.不能迴圈查詢 例如,本題目 查詢dp i,j 需要在內部查詢dp i j 可能繼續進行遞迴,但因為遞迴過程總是沿著海拔降低,故不可能回過頭來再次查詢dp i,j 2.正確處理遞迴 查表 終止條件 本題中,如果點 i,j 旁邊沒有低於它的點,則len i j 為0,直接...
poj 1088 滑雪問題
這題剛開始我想到的是搜尋,但是超時了,所以要進行優化,聽說這是dp經典題,當時就瘋了,dp才初學,想到的是 dp i,j max dp 四個方向 但寫出來不太理想,主要是不懂的遞迴間數值的變化,導致一直出不來答案!後來看題解啊,改啊,搞啊,許久才出來個能a的 並且還0ms了,看來還得多熟悉下 inc...