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

任务描述
在一条直线上,有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 
#include

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;
}

搬运请注明出处!!!

你可能感兴趣的:(算法分析与设计,算法,c++)