劍指Offer精選程式設計面試題14 剪繩子

2021-10-02 02:21:09 字數 1048 閱讀 7143

2)思路

3)補充知識

4)**與測試

要求:給你一根長度為n的繩子,請把繩子剪成m段(m,n都是整數,n > 1 並且m > 1),每段繩子的長度記為k[0], k[1], …k[m]。請問k[0] x k[1] x … x k[m]可能的最大乘積是多少?

例如,當繩子的長度是8時,我們把它剪成長度分別為2、3、3的三段,此時得到的最大乘積是18。

總體來分兩種

動態規劃和貪婪演算法的區別與聯絡:

動態規劃具有兩個性質:

1)重疊子問題

2)最優子結構

貪心演算法具有兩個性質:

1)貪心選擇性質

2)最優子結構

最優子結構性質是指問題的最優解包含其子問題的最優解時,就稱該問題具有最優子結構性質,重疊子問題指的是子問題可能被多次用到,多次計算,動態規劃就是為了消除其重疊子問題而設計的,可以採用自下而上的解決思路。其實貪心演算法是一種特殊的動態規劃,由於其具有貪心選擇性質,保證了子問題只會被計算一次,不會被多次計算,因此貪心演算法其實是最簡單的動態規劃。

(1)**

#pragma once

#include

using

namespace std;

//動態規劃

intmaxproductaftercutting

(int length)

} max = product[length]

;delete

product;

return max;

}//貪婪演算法

intmaxproductaftercutting_solution2

(int length)

//測試**

//#pragma once

//#include

//#include

//#include "offer_14.h"

////int main()

//

劍指Offer精選程式設計面試題4 二維陣列中的查詢

2 思路 3 小結 4 要求 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。樣例 注意題目說的陣列,無論是列還是行,都是遞增的,所有這個矩陣,是個有序矩陣,則可以根據這個矩陣的特點...

劍指Offer精選程式設計面試題15 二進位制中1的個數

2 思路 3 與測試 要求 輸入乙個整數,輸出該數二進位制表示中1的個數。如輸入9,則輸出2。總體來分三種 思路一弊端 此操作輸入負數的時候容易引發死迴圈,因為負數移位的時候最高位會設為1,容易陷入死迴圈。思路二弊端 此操作的迴圈次數為整數二進位制的位數,為常規解法。思路三優勢 此操作的迴圈次數為整...

劍指offer 面試題(1)

這兩天通過做作業接觸了 劍指offer 這本書 覺得裡面的面試題真是異常經典,當你看到那一道一道面試題時,對自我的做題筆試能力肯定會大有脾益 平常可以多做練習,養成乙個習慣 好了,廢話不多說了,直接上題吧 我已經感到 了 第一道 劍指offer 面試題14 調整陣列使奇數全部都位於偶數前面。題目 輸...