注意: 總時間限制: 1000ms 記憶體限制: 65536kb
michael喜歡滑雪百這並不奇怪, 因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待公升降機來載你。michael想知道載乙個區域中最長的滑坡。區域由乙個二維陣列給出。陣列的每個數字代表點的高度。下面是乙個例子
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
乙個人可以從某個點滑向上下左右相鄰四個點之一,當且僅當高度減小。在上面的例子中,一條可滑行的滑坡為24-17-16-1。當然25-24-23-…-3-2-1更長。事實上,這是最長的一條。
輸入的第一行表示區域的行數r和列數c(1 <= r,c <= 100)。下面是r行,每行有c個整數,代表高度h,0<=h<=10000。
輸出最長區域的長度。
5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
25
#include
#include
using
namespace std;
int len[
102]
[102];
int r,c;
int sum_record[
102]
[102];
// 過載運算子用於優先佇列
struct record
bool
operator
<
(const record & a)
const};
// 用優先佇列排序,使得遞推中後一步所需的值一定在前一步中便計算出來了,比強行遞迴計算快
priority_queue qrecord;
// 問題的遞推形式
intsum_length
(int i,
int j)
if(i>
1&& len[i]
[j]>len[i-1]
[j])
if(i[j]>len[i+1]
[j])
if(j>
1&& len[i]
[j]>len[i]
[j-1])
if(j[j]>len[i]
[j+1])
sum_record[i]
[j]=max_length+1;
return sum_record[i]
[j];
}int
main()
}int result=0;
record tmp;
int length;
while
(!qrecord.
empty()
) cout << result;
return0;
}
Coursera機器學習課程筆記(十)
課程中介紹了三種不同的梯度下降演算法,分別是批量 batch 梯度下降演算法,小批量 mini batch 梯度下降演算法,隨機 stochastic 梯度下降演算法 對於小批量梯度下降,必須要將運算向量化實現才是比隨機梯度下降更好的演算法。隨機梯度下降的前提條件是必須將樣本隨機排列,然後在依次遍歷...
Coursera華盛頓大學機器學習課程總結
一 基礎匯入課程 1 回歸 房價 2 分類 亞馬遜商品評價分類 二 回歸 模型 線性回歸 l1 l2正則化回歸 最近鄰回歸和核回歸 演算法 梯度下降 座標下降 概念 損失函式 偏差 方差折中 交叉驗證 稀疏性 過擬合 模型選擇 三 分類 模型 線性分類器 邏輯回歸分類器 svm 神經網路 核 決策樹...
在coursera上旁聽深度學習課程
本人是一名在校研究生,學習方向是深度學習 資料探勘。在深度學習方面本人還是一名小白,所以藉著csdn這個平台,想把自己的學習過程,全程記錄下來。因為在這方面缺少經驗,如何去學習本人也是摸著石頭過河,在不斷嘗試中,導師的建議中,自己去完成deep learning的學習。在開始學習coursera 上...