題目:
有一條公路經過v個村莊,每乙個村莊都處在整數的座標點上(這裡假設公路為數軸)。規劃在這條公路上建立p個郵局,每乙個郵局都要建在某個村莊上,要求讓不同村莊的人到郵局要走的總路程最小。
分析:用動態規劃的辦法,先把輸入的村莊排序,然後計算只有乙個郵局的情況,然後再根據已有的資訊,計算p(p>=2)個郵局時的選址分布,其中p從小到大計算。
class addr_info
};class postsite
} //初始化distance
distance = vector>(size, vector(size, 0));
for (int l = 0; l < size; ++l)
distance[l][r] = sum;
}} //計算totaldis
totaldis = vector>(size, vector(num_of_postoffices+1));
//只有乙個郵局的情況
for (int i = 0; i < size; ++i)
//有2個或2個以上郵局的情況
for (int p = 2; p <= num_of_postoffices; ++p)}}
} //把結果輸出到res
output(0, num_of_postoffices, res);
return res;
} void output(int left, int p, vector&res)
else
}};
main函式中這樣呼叫:
postsite a;
//vectorv = ;
vectorv = ;
auto r=a.main_function(v, 3);
for (auto &i : r)
cout << i << " ";
cout << endl;
郵局選址問題
在乙個按照東西和南北方向劃分成規整街區的城市裡,n個居民點散亂地分布在不同的街區中。用 x 座標表示東西向,用 y座標表示南北向。各居民點的位置可以由座標 x,y 表示。街區中任意2 點 x1,y1 和 x2,y2 之間的距離可以用數值 x1 x2 y1 y2 度量。居民們希望在城市中選擇建立郵局的...
郵局選址問題
描述 在乙個按照東西和南北方向劃分成規整街區的城市裡,n個居民點散亂地分布在不同的街區中。用x 座標表示東西向,用y座標表示南北向。各居民點的位置可以由座標 x,y 表示。街區中任意2 點 x1,y1 和 x2,y2 之間的距離可以用數值 x1 x2 y1 y2 度量。居民們希望在城市中選擇建立郵局...
郵局選址問題 分治
問題描述 在乙個按照東西和南北方向劃分成規整街區的城市裡,n個居民點散亂地分布在不同的街區中。用x座標表示東西向,用y座標表示南北向。各居民點的位置可以由座標 x,y 表示。要求 為建郵局選址,使得n個居民點到郵局之距離的總和最小。以檔案輸入形式進行測試。思路 運用分治思想。將居民點的座標從輸入檔案...