【算法分析与设计】摸金校尉

文章介绍了一道编程题,涉及宝藏采集问题,通过C语言实现快速排序并计算最少摸金校尉数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

任务描述
在一条直线上,有n个宝藏,每个宝藏的坐标是ai。其中ai为整数,n <= 10000
传说曹操手下有一批摸金校尉,每个摸金校尉可以收集长度为k的一段距离内的宝藏。比如,如果一个摸金校尉从坐标为x的位置开始收集,他可以收集[x,x+n]范围内的所有宝藏。
现给出n个宝藏的坐标,问至少需要多少摸金校尉才可以收集到所有的宝藏?
输入
第一行为n和k的值,n <= 10000。 接下来一行是n个整数,代表n个宝藏的坐标ai。
输出
输出所需要的最少的摸金校尉的个数。
样例输入
10 3 1 3 5 7 9 10 8 6 4 2
样例输出
3
代码(c语言):

#include <stdio.h>
#include<stdlib.h>

int cmp(const void* p1,const void* p2)
{
	return (*(int*)p1 - *(int*)p2);
}
int main()
{
	int n,m;
	scanf("%d %d",&n,&m);
	int num[n];
	for(int i=0;i<=n;i++)
	{
		//TODO
		scanf("%d",&num[i]);
	}
	qsort(num,sizeof(num)/sizeof(num[0]),sizeof(num[0]),cmp);
		int count=1,x=0;
		x=num[0]+m;
		for(int i=0;i<n;i++)
		{
			count++;
			x=num[i]+m;
		}
	printf("%d",count);
	return 0;
}

搬运请注明出处!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Walker_Code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值