码迷,mamicode.com
首页 > 其他好文 > 详细

lintcode-medium-Minimum Adjustment Cost

时间:2016-03-31 14:18:06      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

Given an integer array, adjust each integers so that the difference of every adjacent integers are not greater than a given number target.

If the array before adjustment is A, the array after adjustment is B, you should minimize the sum of |A[i]-B[i]|

 

Notice

You can assume each number in the array is a positive integer and not greater than100.

Example

Given [1,4,2,3] and target = 1, one of the solutions is [2,3,2,3], the adjustment cost is 2 and it‘s minimal.

Return 2.

 

public class Solution {
    /**
     * @param A: An integer array.
     * @param target: An integer.
     */
    public int MinAdjustmentCost(ArrayList<Integer> A, int target) {
        // write your code here
        
        if(A == null || A.size() == 0)
            return 0;
        
        int size = A.size();
        
        int[][] dp = new int[size + 1][101];
        
        for(int i = 0; i < 101; i++)
            dp[0][i] = 0;
        
        for(int i = 1; i <= size; i++){
            for(int j = 0; j < 101; j++){
                dp[i][j] = Integer.MAX_VALUE;
                
                int upper = Math.min(100, j + target);
                int lower = Math.max(0, j - target);
                
                for(int k = lower; k <= upper; k++){
                    dp[i][j] = Math.min(dp[i][j], dp[i - 1][k] + Math.abs(j - A.get(i - 1)));
                }
                
            }
        }
        
        int result = Integer.MAX_VALUE;
        for(int i = 0; i < 101; i++)
            result = Math.min(result, dp[size][i]);
        
        return result;
    }
}

 

lintcode-medium-Minimum Adjustment Cost

标签:

原文地址:http://www.cnblogs.com/goblinengineer/p/5340905.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!