輸油管道問題(分治策略)

2021-10-23 02:37:02 字數 760 閱讀 4982

問題描述:

思路:確定輸油主幹道的縱座標,因為是東西走向,用前面用到的選擇問題求中位數也就是主幹道的縱座標,然後用到

以下是**

//select**注釋在選擇問題中給出了解釋 

#include int a[50];

int select(int left,int right,int k)

while(a[i]x);

if( i>=j ) break ;

std::swap(a[i],a[j]);

}if( j-left+1 == k ) return x;

a[left] = a[j];

a[j] = x;

if( j-left+1 < k )

return select(j+1,right,k-j+left-1);

else

return select(left,j-1,k);

}int main()

{ int x;

int y;

int n;

scanf("%d",&n);

for(int i=0; i以下是程式執行結果:

輸油管道問題

某石油公司計畫建造一條由東向西的主輸油管道。該管道要穿過乙個有n 口油井的油田。從每口油井都要有一條輸油管道沿最短路經 或南或北 與主管道相連。如果給定n 口油井的位置,即它們的x 座標 東西向 和y 座標 南北向 應如何確定主管道的最優位置,即使各油井到主管道之間的輸油管道長度總和最小的位置?1 ...

輸油管道問題

某石油公司計畫建造一條由東向西的主輸油管道。該管道要穿過乙個有n口油井的油田。從每口油井都要有一條輸油管道沿最短路經 或南或北 與主管道相連。如果給定n口油井的位置,即它們的x座標 東西向 和y座標 南北向 應如何確定主管道的最優位置,即使各油井到主管道之間的輸油管道長度總和最小的位置?給定n口油井...

輸油管道問題

根據中位數定理,要使總和距離最小,應該選擇中位數作為目標點。因此解決此問題的方法就是將各個油井投影到y軸,找到y座標的中位數即可。解題思路 要找出乙個數的中位數,最簡單的方法就是對陣列進行排序,但是快速排序的時間複雜度也需要o nlogn 對與有序陣列a n 如果陣列是奇數個,中位數就是a n 2 ...