91
来源:互联网 发布:淘宝客服(在家上班) 编辑:程序博客网 时间:2024/04/27 15:22
2017.9.7
设定二维数组 dp[i][j],表示 将第 i 个数调整到 j 时,当前最小的调整代价总和。
那么初始化时,将第0 个元素调整到 j 时,dp[ 0 ][ j ] 就为 abs(j - arr[0])的值。
在之后的运算中,将第 i 个元素调整到 j 时 ,其前一个元素的变化范围为 【j - targer ,j + target】。
此时的dp[ i ][ j ] 应该为 arr[i] 调整到 j 的代价,加上 arr[i-1] 调整到【j - targer ,j + target】的最小值。
public class Solution { /* * @param A: An integer array * @param target: An integer * @return: An integer */ public int MinAdjustmentCost(List<Integer> A, int target) { // write your code hereObject []arr = A.toArray(); // write your code hereint count = Integer.MAX_VALUE;int length = arr.length;if(length <= 1){return count;}int [][]dp = new int[length][101];for(int j = 0; j < 101; j ++){dp[0][j] = Math.abs((int)arr[0] - j); }for(int i = 1; i < length; i++){for(int j = 0; j < 101; j++){int tmp = Integer.MAX_VALUE;for(int k = charge(j-target); k <= charge(j+target);k++){if(dp[i-1][k] < tmp){tmp = dp[i-1][k];}}dp[i][j] = Math.abs((int)arr[i] - j) + tmp;}}for(int j = 0; j < 101; j ++){if(dp[length -1 ][j] < count){count = dp[length -1 ][j];}}return count; } public int charge(int x) {if( x < 0){return 0;}if( x > 100){return 100;}return x;}}
阅读全文
0 0
- 91
- 91
- nyoj-91
- NYOJ-91
- NYOJ-91
- ocp-91
- syaWedoceD.91
- nyoj 91
- leetcode 91
- 练习91
- 91-DecodeWays
- SCJP过了,91%!
- SQLServer技术(91)
- reactos操作系统实现(91)
- 【codeforces #91 div2】
- Codeforces Beta Round #91
- 91vpn充值
- CF 91B
- 线程--wait,notify。
- Java基础四:String操作总结
- 我的重要项目集合
- 物联网安全公司及产品介绍
- 使用TabLayout实现不规则Tab
- 91
- Windows下的weblogic部署web项目运行比较慢或内存溢出,需要调整内存大小
- Android 快速开发必备
- 完美解决Source Insight 4.0中文乱码
- STM32学习笔记1:点亮第一盏LED灯
- 从源码分析Animation动画与setVisibility(View.GONE)之间的小坑
- linux tail 命令
- 快启动u盘pe怎么安装系统详细图文教程
- AngularJs的UI组件Datepicker Popup