Codility上的練習 (15

2021-06-27 13:14:14 字數 666 閱讀 4440

(1)  numbersolitaire

乙個遊戲是從一排n個格仔開始,格仔編號0..n - 1,起初,棋子在a[0],每個格仔裡有乙個整數(可能正,可能負)。你在格仔i,你扔骰子,得到點數x = [1..6],然後走到編號為i + x的格仔,如果這個格仔不存在就再投一次骰子,直到i + x號格仔存在。你走到n - 1號格仔時,遊戲結束。你所經過格仔裡的整數的和是你的得分,求最大可能得分?

資料範圍: n [2..10^5], 格仔裡的數的範圍 [-10000, +10000]。

要求複雜度: 時間o(n),空間o(n)

分析: 乙個顯然的dp  dp[i] = a[i] + max(dp[i - x])  1<=x<=min(6,i)

**:

// you can use includes, for example:

// #include // you can write to stdout for debugging purposes, e.g.

// cout << "this is a debug message" << endl;

int solution(vector&a)

dp[i] += a[i];

}return dp[n - 1];

}

(2) minabssum

Codility上的練習 (9)

1 countsemiprimes 半質數的定義是恰好兩個質數 可以相同 乘積的數,例如4,6,9,10,14,15,21,22,25,26,都是半質數。給定n,長度為m的等長整數陣列p和q,滿足1 p k q k n,求每個區間 p k q k 之間有多少個半質數。函式頭部 vectorsolut...

Codility上的練習(11)

1 ladder 給定兩個等長的陣列a和b,a i 和b i 表示求乙個有a i 級的梯子,每次上1級或者兩級,上到最高端的方法數對2 b i 取餘數的結果。資料範圍 陣列長度 l 1.30000 a中數字範圍 1.l b中數字範圍 1.30 要求複雜度 時間空間都是o l 分析 打表法 我們迴圈可...

Codility上的練習 (14)

1 tieropes 給定n段繩子 乙個正整數陣列,和乙個正整數k,每次只能連線相鄰的兩根繩子,連線好了繩子長度為之前的繩子長度和,並且位置不變,問這麼連線下去,最多能形成多少根長度至少為k的繩子?資料範圍 n 1.10 5 陣列元素和k的範圍 1.10 9 要求複雜度 時間o n 空間o 1 分析...