赞
踩
#include<stdio.h> #include<stdlib.h> #include<math.h> //贪心算法之货仓选址问题 /** * void* p是万能指针,可以和其它任意类型的指针进行转换,前提是确保转换是合法的 */ //写好用于qsort的比较函数,这里写的函数一般用于升序排序 int compare(const void* a, const void* b) { //(int*)为先将指针a强制类型转换为整型指针,前面的*为取值操作 return(*(int*)a - *(int*)b); } //找出数组排好序后处于中间位置的数 int find(int* shops, int arrNum)//shops为数组名,arrNum为数组的长度 { qsort(shops,arrNum,sizeof(int),compare); //因为是整型数组,所以第三部分写的是sizeof(int) int pos = shops[arrNum / 2]; return pos; } //求总的距离 int sum(int pos,int* shops, int arrNum) { int total = 0; for (int i = 0; i < arrNum; i++) { total += abs(pos - shops[i]); } return total; } int main(int argc, char* argv[]) { int n = 0; printf("请输入商店数量:"); scanf_s("%d",&n); int* shops = (int*)malloc(sizeof(int) * n); printf("输入商店坐标\n"); for (int i = 0; i < n; i++) { printf("第%d间商店:",i+1); scanf_s("%d",shops+i); } int pos = find(shops, n); int total = sum(pos, shops, n); printf("货仓坐标:%d,最短距离:%d\n",pos,total); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。