今天晚上自習學習演算法,這裡就溫故知新寫一篇動歸的部落格
本題題目為漢語,此處就不翻譯了
解題思路:本題按照題意可以很容易的看出這是一道典型的動態規劃的題目。無非就是求出每個點周圍可以達到最大長度的點,依次繼續。本題目比較適合遞迴來進行動態規劃。
動態規劃方程:f[i][j] = max+1
其中f[i][j]表示第i行第j列能達到的最大長度
**如下:
#include
#define n 101
using
namespace
std;
int r,c;
int a[n][n];
int len[n][n];
int dir[4][2] = ,,,};
int getlen(int x,int y)
int main()
}for(int i = 1;i<=r;i++)
}int s = -10000;
for(int i = 1;i<=r;i++)
}cout
0;}
動歸演算法性質的必要性分析:
上邊的**定義了乙個dir陣列來進行對乙個點周圍4個點進行迴圈,是乙個我之前知道卻不常用的小技巧,感覺還是很不錯的。**還是需要多借鑑才能盡快的掌握更多的技巧,爬上巨人的肩膀總比創造乙個巨人容易。
POJ1088 動態規劃
題目鏈結 這個題目和最長子序列什麼的極為相似。不過之前都是一維,現在變成二維的了。僅此而已。因此我們可以想辦法把它先變成一維的。struct nodea 100 100 5 然後我們可以根據height排序,從最高點開始考慮,有點貪心的意思。和單源最短路徑dijkstra相似。int ma 100 ...
動態規劃 POJ 1088 滑雪
意思就是把所有點存下來,按照高度排個序,然後從小到大列舉,然後判斷當前的點的四個方向有沒有存在經過當前點更優的情況,並且那個點的高度比當前點的高度要高如果存在就更新,因為根據大小排了序,所以不會出現不會出現乙個點重複統計的情況那麼複雜度是o n2 include include include us...
動態規劃 POJ1088 滑雪問題
description michael喜歡滑雪百這並不奇怪,因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待公升降機來載你。michael想知道載乙個區域中最長底滑坡。區域由乙個二維陣列給出。陣列的每個數字代表點的高度。下面是乙個例子 1 2 ...