北大Coursera課程《演算法基礎》課後習題 滑雪

2021-10-09 14:49:17 字數 1603 閱讀 9295

注意: 總時間限制: 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 上...