贪心算法之货仓选址问题

c 复制代码
#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;
}
相关推荐
充值修改昵称8 分钟前
数据结构基础:从二叉树到多叉树数据结构进阶
数据结构·python·算法
Deepoch20 分钟前
Deepoc数学大模型:发动机行业的算法引擎
人工智能·算法·机器人·发动机·deepoc·发动机行业
浅念-1 小时前
C语言小知识——指针(3)
c语言·开发语言·c++·经验分享·笔记·学习·算法
Hcoco_me1 小时前
大模型面试题84:是否了解 OpenAI 提出的Clip,它和SigLip有什么区别?为什么SigLip效果更好?
人工智能·算法·机器学习·chatgpt·机器人
BHXDML2 小时前
第九章:EM 算法
人工智能·算法·机器学习
却道天凉_好个秋2 小时前
目标检测算法与原理(三):PyTorch实现迁移学习
pytorch·算法·目标检测
无限进步_3 小时前
【C++】大数相加算法详解:从字符串加法到内存布局的思考
开发语言·c++·windows·git·算法·github·visual studio
C+-C资深大佬3 小时前
C++ 数据类型转换是如何实现的?
开发语言·c++·算法
cwplh3 小时前
DP 优化二:斜率优化 DP
算法·动态规划
Hcoco_me3 小时前
大模型面试题90:half2,float4这种优化 与 pack优化的底层原理是什么?
人工智能·算法·机器学习·langchain·vllm