/*贪心法求解带有期限的作业排序*/
#include <stdlib.h>
#include <stdio.h>
typedef struct _Job
{
int profit;
int deadline;
}Job;
Job* JobPatch(Job jobs[],int n)
{ //jobs 已经按照profit从大到小排序
//贪心法的思想就是按照profit从大大小选择插入到合适位置
int i,j;
Job *J = (Job *)malloc(sizeof(Job)*100);
for(i=0; i<100; i++)
{
J[i].deadline = -1;
J[i].profit = -1;
}
for(i=0; i<n; i++)
{
for(j=jobs[i].deadline; j>0; j--)
{
if(J[j].profit == -1)
{
J[j].profit = jobs[i].profit;
J[j].deadline = jobs[i].deadline;
break;
}
}
}
return J;
}
/*打印*/
void print(Job *jobs,int n)
{
int i = 0,profit=0;
for(i=0;i<n;i++)
{
if(-1 != jobs[i].profit)
{
printf("%d\t",jobs[i].profit);
profit &#
贪心法求解带有期限的作业排序
最新推荐文章于 2023-05-03 11:05:51 发布
本文介绍了一个使用贪心法解决带有期限的作业排序问题的C语言实现。程序首先将作业按照利润从大到小排序,然后依次尝试将每个作业插入到满足其期限的最早位置,以最大化总利润。最后,程序打印出安排的作业及其总利润。
摘要由CSDN通过智能技术生成