• 大小: 2KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-01-03
  • 语言: C/C++
  • 标签: 士兵战队  分治法  

资源简介

这个c语言编写的士兵战队问题,利用中位数进行解决。王晓东 编著的 计算机算法设计与分析(第三版)的一个课后实现题。

资源截图

代码片段和文件信息

#include
#include
#include

int *x*y;

void QuickSort(int Lint Rint *a){ //站队先找要站定的行,确定y方向,应取y值的中位数
int i = L j = R; //x轴方向由于要一个挨着一个,假定k为最佳最左位置
int mid = a[(i+j)/2]; //所求最优步数S=|X0-k|+|X1- (k+1) |+|X2-(k+2)|+ …… +|Xn-1-(k+(n-1))|
//经过变形S=|X0-k|+|(X1-1)-k|+|(X2-2)-k|+ …… …… +|(Xn-1-(n-1))-k|
int t = 0; //亦为求一系列变形后的到某点最小距离和最小问题,k为变形后系列的中位数
while(i < j){
while(a[i] < mid) i++;
while(a[j] > mid) j--;
if(i <= j){
t = a[i];
a[i] = a[j];
a[j] = t;
i++;
j--;
}
}
if(i < R) QuickSort(iRa);
if(j > L) QuickSort(Lja);
}

int main(){
FILE *fin*fout;
fin=fopen(“input.txt““r“);

fout=fopen(“output.txt““w“);
if(fin==NULL){
    printf(“can not open the input.txt\n“);

评论

共有 条评论