動態規劃 郵局選址問題

2021-07-02 23:38:49 字數 995 閱讀 5604

題目:

有一條公路經過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個居民點到郵局之距離的總和最小。以檔案輸入形式進行測試。思路 運用分治思想。將居民點的座標從輸入檔案...