資源簡介
這個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? while(a[i]? while(a[j]?>?mid)?j--;
if(i?<=?j){
t?=?a[i];
a[i]?=?a[j];
a[j]?=?t;
i++;
j--;
}
}
if(i? 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“);
- 上一篇:基于opencv的手勢識別程序
- 下一篇:VC++ DFT FFT
評論
共有 條評論