用C编程,中位数的应用—士兵站队问题描述在一个划分成网格的操场上,n个士兵散乱地站在网格点上.网格点由整数坐标(x,y)表示.士兵们可以沿网格边上、下、左、右移动一步,但在同一时刻任

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 10:54:46
用C编程,中位数的应用—士兵站队问题描述在一个划分成网格的操场上,n个士兵散乱地站在网格点上.网格点由整数坐标(x,y)表示.士兵们可以沿网格边上、下、左、右移动一步,但在同一时刻任

用C编程,中位数的应用—士兵站队问题描述在一个划分成网格的操场上,n个士兵散乱地站在网格点上.网格点由整数坐标(x,y)表示.士兵们可以沿网格边上、下、左、右移动一步,但在同一时刻任
用C编程,中位数的应用—士兵站队问题
描述
在一个划分成网格的操场上,n个士兵散乱地站在网格点上.网格点由整数坐标(x,y)表示.士兵们可以沿网格边上、下、左、右移动一步,但在同一时刻任一网格点上只能有一名士兵.按照军官的命令,士兵们要整齐地列成一个水平队列,即排列成(x,y),(x+1,y),…,(x+n-1,y).如何选择x 和y的值才能使士兵们以最少的总移动步数排成一列.编程任务:计算使所有士兵排成一行需要的最少移动步数.
Input
总共有若干个测试案例.
每个测试案例第一行输入士兵数n,1 =< n

用C编程,中位数的应用—士兵站队问题描述在一个划分成网格的操场上,n个士兵散乱地站在网格点上.网格点由整数坐标(x,y)表示.士兵们可以沿网格边上、下、左、右移动一步,但在同一时刻任
#include
#include
#include
#include
using namespace std;
int n;
int midx,midy;
int ans(0);
int x1[10001],x2[10001],y[10001],;
int main()
{
while(1)
{
cin>>n;
if(n==0)
break;
for(int i=0;i>x1[i]>>y[i];
sort(x1,x1+n);
sort(y,y+n);
midy=y[n>>1];
for(int i=0;i>1];
for(int i=0;i