#include <stdio.h>
#include <stdlib.h>
#define N 5
typedef struct ExtentNode
{
int x;
int y;
}Ex,*pEx;
int a[N]={1,3,4,6,7};
bool isOverLap(int x,Ex e)
{
if(e.x<=x && e.y>=x)
return true;
else
return false;
}
void greedy(pEx e)
{
e[0].x=a[0];
e[0].y=a[0]+1;
for(int i=1,j=0;i<N;i++)
{
if(!isOverLap(a[i],e[j]))
{
j++;
e[j].x=a[i];
e[j].y=a[i]+1;
}
}
}
void printE(pEx e)
{
for(int i=0;i<N;i++)
{
if(e[i].x>0)
{
printf("[%d,%d] ",e[i].x,e[i].y);
}
}
}
void main()
{
pEx e=(pEx)malloc(N*sizeof(Ex));
for(int i=0;i<N;i++)
{
e[i].x=e[i].y=-1;
}
greedy(e);
printE(e);
getchar();
}算法导论 练习题 16.2-5
最新推荐文章于 2024-03-15 21:22:59 发布
本文介绍了一个简单的区间分配算法,通过贪心策略实现不重叠区间的最大利用。算法使用C语言编写,通过定义结构体来表示区间,并实现了判断区间是否重叠的函数。主程序中动态分配内存用于存储区间节点,并通过遍历输入数据来确定如何分配这些区间以避免重叠。

4688

被折叠的 条评论
为什么被折叠?



