【发布时间】:2012-10-22 07:27:59
【问题描述】:
我有一个矩阵nxn,带有正整数。我必须计算每个元素的成本。
Cost(i, j) = min( val(p, r) + dist(pos(i, j) ,pos(p, r)) ), p, r = 0:n-1.
dist(pos(i, j) ,pos(p, r)) = |i - p| + |j – r|(距离曼哈顿)
我用这样的方法在 O(n^4) 中解决了这个问题:
for(int i = 0 ; i < n ; i ++)
for(int j = 0 ; j < n ; j ++) {
int cost = 9999999;
for(p = 0 ; p < n ; p ++) {
for(r = 0 ; r < n ; r ++) {
if( val[p][r] + abs(i-p) + abs(j-r)) < cost {
cost = val[p][r] + abs(i-p) + abs(j-r);
}
}
}
}
现在,我需要 O(n^2) 的最优解。我知道这是可能的,而且我听说解决方案是动态编程,但我看不出这怎么可能。
【问题讨论】: