Post Office Problem
2015-10-14 23:23
232 查看
On one line there are n houses. Give you an array of integer means the the position of each house. Now you need to pick k position to build k post office, so that the sum distance of each house to the nearest post office is the smallest. Return the least
possible sum of all distances between each village and its nearest post office.
样例
Given array a =
挑战
Could you solve this problem in
possible sum of all distances between each village and its nearest post office.
样例
Given array a =
[1,2,3,4,5], k = 2.return
3.
挑战
Could you solve this problem in
O(n^2)time ?
class Solution { public: /** * @param A an integer array * @param k an integer * @return an integer */ int postOffice(vector<int>& A, int k) { // Write your code here int n = A.size(); sort(A.begin(), A.end()); int cost ; memset(cost, 0, n*n*sizeof(int)); for (int i = 0; i < n; i++) { for (int j = i+1; j < n; j++) { int mid = i + (j-i)/2; cost[i][j] = 0; for (int k = i; k <= j; k++) { cost[i][j] += abs(A[k] - A[mid]); } } } int buf [k+1]; memset(buf, 0, n*(k+1)*sizeof(int)); for (int i = 0; i < n; i++) { for (int j = 1; j <= k; j++) { if (j == 1) { buf[i][j] = cost[0][i]; } else if (j > i) { buf[i][j] = 0; } else { buf[i][j] = INT_MAX; for (int k = 0; k < i; k++) { buf[i][j] = min(buf[i][j], buf[k][j-1] + cost[k+1][i]); } } } } return buf[n-1][k]; } };
相关文章推荐
- sax解析xml
- 字符串
- MeteoInfo 新网站
- 高性能javascript 笔记 第一章 loading and executing (二) 动态加载script
- ABySS 拼接工具
- Mac OS X ,Windows,Unix-like上的“换行”
- NSPredicate
- 标准java http和 apach httpclient总结
- #最新动态#下周工作计划
- 合并有序的两个数字数组为一个
- [CareerCup] 11.1 Merge Arrays 合并数组
- VB+DX游戏编程教程 第五话:2D精灵
- Spring思维导图
- saiku - 将saiku自带的H2嵌入式数据库迁移到本地mysql数据库
- 正则表达式(regex)错误使用导致功能漏洞分析
- 数据库三种范式的通俗讲解
- Macbook os x 10.10.5 下装mysql 一些记录
- 磁盘分区、格式化及挂载使用
- Pillow实现图片对比
- HDU 1712 ACboy needs your help (分组背包)