算法导论——输油管道问题解法

                  输油管道问题解法

输油管道问题求的是中位数,用顺序统计量解决。不需要管X坐标,只需要管Y坐标,就OK了。

如果n是奇数,求(n-1)/2的顺序统计量

如果n是偶数,求[N/2,N/2+1]闭区间里面的任意一点,都可以的。程序中采用下中位数

证明如下:

用n为偶数,举例子。

假设T为[N/2,N/2+1]闭区间里面的任意一点,现在移动T距离为d。

当不超过这个区间的时候,必然有N/2的点与管道增加d,N/2的点减少d,所以中的距离不变。

当越过某一个端点的时候,必然有N/2+1的点距离管道增加d,N/2-1的点减少d,所以总的距离在增加。

所以管道在这个[N/2,N/2+1]闭区间里面是最小的铺设费用。

参考:算法导论9.3-9

#include<stdio.h>

#include<stdlib.h>

int partion(int *a,int p,int r){

//划分

int x=a[r];

int i=p-1;

int temp;

for(int j=p;j<r;j++){

if(a[j]<=x){

i++;

        temp=a[j];

a[j]&#

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值