LintCode 最小調整代價

2021-07-02 18:16:53 字數 710 閱讀 2777

給乙個整數陣列,調整每個數的大小,使得相鄰的兩個數的差小於乙個給定的整數target,調整每個數的代價為調整前後的差的絕對值,求調整代價之和最小是多少。

樣例對於陣列[1, 4, 2, 3]

和target=1

,最小的調整方案是調整為[2, 3, 2, 3],調整代價之和是2。返回2。 注意

你可以假設陣列中每個整數都是正整數

,且小於等於100。

分析:一般這種題,每個位置上都有很多種可能,基本上就是動態規劃了,又因為每個位置最多100,於是可以列舉每個位置的數值,用dp[i][j]表示到第i個數為止,第i個數變成j後的最小調整代價,狀態轉移只和i-1有關,可以進行空間優化。

**:class solution {

public:

/*** @param a: an integer array.

* @param target: an integer.

*/int minadjustmentcost(vectora, int target) {

// write your code here

if(a.size()<2)

return 0;

vector> dp(a.size(),vector(101,0));

for(int i=0;i<101;i++)

dp[0][i] = abs(a[0]-i);

for(int i=1;i

lintcode練習 91 最小調整代價

給乙個整數陣列,調整每個數的大小,使得相鄰的兩個數的差不大於乙個給定的整數target,調整每個數的代價為調整前後的差的絕對值,求調整代價之和最小是多少。對於陣列 1,4,2,3 和target 1,最小的調整方案是調整為 2,3,2,3 調整代價之和是2。返回2。你可以假設陣列中每個整數都是正整數...

91 最小調整代價

2017.9.7 設定二維陣列 dp i j 表示 將第 i 個數調整到 j 時,當前最小的調整代價總和。那麼初始化時,將第0 個元素調整到 j 時,dp 0 j 就為 abs j arr 0 的值。在之後的運算中,將第 i 個元素調整到 j 時 其前乙個元素的變化範圍為 j targer j ta...

LintCode 91 最小調整代價(動態規劃)

題目 dp i j 表示調整到第i個數時,此時,第i個數取值為j,為代價和最小。顯然dp i 1 k 已知,則調整的總代價為dp i j dp i 1 k abs j a i 由於j和k有多種取值可能,所以迴圈求解判斷,k表示前乙個數,j表示現在的數,假設j確定,那麼k的取值就是在乙個範圍內,因為差...