文档介绍:第一个作业输油管问题:
请启动 oil channel
将测试文件的路径或者直接拖拽测试文件到控制台中,即可得到输出结果存放在测试文件目
// in
5
12
22
13
3-2
33
23
2 19
8923 23
9 32
9 12
23 42
23-8
23 890
23 -2
2-29
// copyright: @ Eason Yang
//data:
include <iostream>
#inelude <fstream>
#inelude <string>
#include <cstdio>
#include <>
using namespace std;
include ""
bool LoadWellData(int * data_y, int & n, string szPath);
int main(int argc, char ** argv)
{
string szPath, szTemp;
//得到文件路径;
cout« "请输入测试文件路径或者将该文件拖入控制台中:”《 endl; getline(cin, szTemp, '\n');
if (「") != string::npos && ("") != stripos)
{
szPath = (("")+l, ("")-l);
}
else
{
szPath = szTemp;
}
int * data_y = new int[1000000];
int n = 0;
//if (!LoadWellData(data_y, n, szPath))
//{
// cout « "亲,测试文件中的数据格式不正确,请检查核对后才重新运行。谢谢。” « endl;
// return -1;
//}
// for my test
n = 50000;
for (int i = 0; i < n ; i++)
{
data_y[i] = ran d();
}
clock_t start_clock, end_clock;
start_clock = clock();
〃求油管的y坐标,如果油井数是奇数,那就是中位数;如果是偶数,则是中间两个数 的均值;
int main_channel_y = YXYSort<int>::GetKth(data_y, n, n / 2 + 1);
Illi理论上而言,如果只求解输油管最小长度总和;
〃讦(n%2 == 0)
//{
// main_channel_y = (YXYSort<int>::GetKth(data_y, n, n / 2) +
YXYSort<int>::GetKth(data_y, n, n / 2 + 1)) / 2;
//}
//else
//{
// main_channe