#include

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

一維帶權郵局位置問題(找?guī)嘀形粩?shù))C++實現(xiàn)

系統(tǒng) 4589 0
帶權郵局位置問題: 已知n個點p1,p2,...,pn及與它們相聯(lián)系的權重w1,w2,...,wn。我們希望能找到一點p(不一定是輸入點中的一個),使和式 最小,此處d(a,b)表示點a和點b之間的距離。

對于一維帶權郵局位置問題即找?guī)嘀形粩?shù)。如下

// 一維郵局選址問題.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
#include<ctime>
#include<cmath>
#define N 100
using namespace std;

struct Node
{
double value;
double weight;
};
Node nodes[N];
//產(chǎn)生一個隨即下標,用其對應的數(shù)組元素作為比較標準(即一趟快速的主元)
int random(int m,int n)
{
srand((unsigned)time(NULL));
return m + (rand()%(n-m+1));
}
//一趟快速排序
int qartition(Node *nodes,int begin,int end)
{

int i = begin-1,j=begin;
double x = nodes[end].value;
while(j<end)
{
if(nodes[j].value<=x)
{
i++;
Node temp = nodes[i];
nodes[i]=nodes[j];
nodes[j]=temp;
}
j++;
}
Node temp = nodes[end];
nodes[end]=nodes[i+1];
nodes[i+1]=temp;
return i+1;
}
//一趟隨機化快速排序
int random_qartition(Node *nodes,int begin,int end)
{
int q = random(begin,end);
Node temp = nodes[end];
nodes[end]=nodes[q];
nodes[q]=temp;
return qartition(nodes,begin,end);
}
//隨機化快速排序
void random_fast_sort(Node *nodes,int begin,int end)
{
if(begin<end)
{
int p = random_qartition(nodes,begin,end);
random_fast_sort(nodes,begin,p-1);
random_fast_sort(nodes,p+1,end);
}
}
//得到帶權的中位數(shù)
Node GetMidWeight(Node *nodes,int begin,int end,double SumWeight)
{
double midSum = 0.0;
int i;
for(i=begin;i<=end;i++)
{
midSum+=nodes[i].weight;
if(midSum>=SumWeight/2)
break;
}
return nodes[i];
}
int _tmain(int argc, _TCHAR* argv[])
{
int cases;
cout<<"請輸入案例個數(shù):"<<endl;
cin>>cases;
while(cases--)
{
cout<<"請輸入數(shù)據(jù)個數(shù):"<<endl;
int n;
cin>>n;
int i;
double sum = 0.0;
cout<<"請輸入每一點值和其權值"<<endl;
for(i=0;i<n;i++)
{
cin>>nodes[i].value>>nodes[i].weight;
sum+=nodes[i].weight;
}
random_fast_sort(nodes,0,n-1);
cout<<"郵局位置為:"<<endl;
Node node = GetMidWeight(nodes,0,n-1,sum);
cout<<node.value<<endl;
cout<<"總代價為:"<<endl;
double sumValue = 0.0;
for(i=0;i<n;i++)
{
sumValue+=abs(nodes[i].value-node.value);
}
cout<<sumValue<<endl;
}
system("pause");
return 0;
}

<wbr><wbr><wbr>找出二維帶權郵局位置問題的最佳解答,其中所有的點都是(x,y)坐標對,并且點a(x1,y1)與點b(x2,y2)之間的距離是Manhattan距離:d(a,b)=|x1-x2|+|y1-y2|。</wbr></wbr></wbr>

對于二維帶權郵局位置問題可以轉化為一維郵局位置問題,分別求x、y的帶權中位數(shù)。見下篇《二維帶權郵局位置問題》

一維帶權郵局位置問題(找?guī)嘀形粩?shù))C++實現(xiàn)


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲欧美中文字幕高清在线一 | 欧美一级永久免费毛片在线 | 中文国产成人精品久久一区 | 每日更新国产精品视频 | 久操热| 天天视频国产精品 | 99国产精品热久久久久久夜夜嗨 | 色黄网站青青草原免费 | www.伊人久久 | 日韩一级特黄毛片在线看 | 国产麻豆免费 | 免费看一级a一片毛片 | 三级aaa黄特色 | 免费九九视频 | 97影院理论片在线观看 | 欧美7777| 亚洲综合伊人色一区 | 美女视频黄是免费的 | 亚洲欧美高清 | 亚洲一区二区三区网站 | 老子影院午夜伦不卡不四虎卡 | 天天操天天弄 | 奇米影视111 | 香蕉碰碰人人a久久动漫精品 | 牛牛影视成人午夜影视 | 国产情侣偷国语对白 | 亚洲精品123区在线观看 | 欧美成人猛男性色生活 | 亚洲青草视频 | 4htv影院永久免费在线地址 | 福利网站在线观看 | 成人一级片在线观看 | 国产成人8x视频一区二区 | 中文字幕一区二区三区有限公司 | 天天躁日日躁aaaaxxxx | 国产大毛片 | 天天干影视| 二级毛片在线观看 | 99视频有精品视频免费观看 | 国产精品美女自在线观看免费 | 伊人伊色|