貌似是贪心算法,我只说下算法,代码楼主自己实现去吧。
先从n个任务中选出结束时间最短的一个
从余下的任务中选择合适的任务(开始时间大于第一个任务的时间)
从合适的任务中选择结束时间最短的一个。
重复2步骤
直到选完,得到答案。
知道总贪心。。。wa了几遍了。。。
追答你等下啊,等晚上回去了我新自写一遍。
追问好的。。。
追答#include<stdio.h>
#include<stdlib.h>
int gloab=0;
void fun(int* begin,int* end,int n,int last,int big)
{
int i,s,small=big,sgin=0;
for(i=0;i<n;i++)
{
if (end[i]<=small&&begin[i]>last)
{small=end[i];s=i;sgin=1;}
}
if(sgin)
{gloab++;
fun(begin,end,n,end[s],big);
}
}
int main(){
int n,i,big;
while(1)
{
gloab=0;
scanf("%d",&n);
int *begin,*end;
begin=(int*)malloc(sizeof(int)*n);
end=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
scanf("%d %d",&begin[i],&end[i]);
big=end[0];
for(i=0;i<n;++i)
{
if(end[i]>big)
big=end[i];
}
fun(begin,end,n,0,big);
printf("%d\n",gloab);
free(begin);
free(end);
}
return 0;
}
内存超限。。。
改了。。。
追答内存超了?怎么处理的?
追问可能是动态分配内存