import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param houses int整型一维数组 * @param k int整型 * @return int整型 */ public int minTotalDistance (int[] houses, int k) { // write code here int[][] dp = new int[houses.length][k+1]; Arrays.sort(houses); for (int i = 0; i < houses.length; i++){ for (int j = 0; j < k+1; j++){ if (i == 0){ dp[i][j] = 0; }else if (j == 0){ dp[i][j] = 0; }else if (j == 1){ dp[i][j] = calDistance(houses[0],houses[i]); }else if (i+1 == j){ dp[i][j] = 0; }else{ int minD = houses[houses.length-1]*houses.length; for (int x = 0; x < i; x++){ minD = Math.min(minD, dp[x][j-1] + calDistance(houses[x+1],houses[i])); } dp[i][j] = minD; } } } return dp[houses.length-1][k]; } public static int calDistance(int a, int b){ return Math.abs(a-b); } }