12.任务安排

Description

小张经常为了事情太多安排不开而苦恼。现在他手头有n项任务,每项任务都有一个开始时间si,ei。要想完成一个任务必须从开始时间做到结束时间,并且同一时间小张只能进行一项任务。
小张想知道他最多可以完成几项任务。

Input

第一行一个整数n,表示小张手头任务的个数。

接下来n行,每行两个整数si,ei表示任务的开始时间和结束时间。

Output

一行一个整数,表示小张最多可以完成几项任务。

思路

思路:对结束时间进行qsort排序。使用结构体,可以在排序时不丢失配对开始时间的信息。

注意:解引用最好两侧都加上括号,不加的话在dev上可以跑,但乐学似乎编译不过。

代码

#include<stdio.h>
#include<stdlib.h>
 
typedef struct
{
	int sta;
	int end; 
}time;
time t[300010];

int comp(const void*a,const void*b)
{
	return (*(time*)a).end-(*(time*)b).end;
}
int main()
{
	int n=0, i=0 ,j=0 , ans=1;
	scanf("%d\n",&n);
	for(i=0;i<n;i++)//输入存储 
	{
		scanf("%d %d",&(t[i].sta),&(t[i].end));	
	}
	qsort(t,n,sizeof(time),comp); //排序end
	 
	for(i=0;i<n;i++)//找答案 
	{
		for(j=i+1 ; j<n; j++)
		{
			if((t[i].end)<=(t[j].sta))
			{
				ans++; i=--j; break;
			}
		}
	}
	printf("%d\n",ans);
	return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值