Job sequence with multiple deadlines:
#include<stdio.h>
void main()
int i,j,p[20],d[20],a[20],slot[20],temp,r,total=0,max,n;
printf("\nenter no.of objects");
scanf("%d",&n);
printf("\nenter profit");
for(i=0;i<n;i++)
scanf("%d",&p[i]);
printf("\nenter deadline");
for(i=0;i<n;i++)
scanf("%d",&d[i]);
}
max=d[0];
for(i=0;i<n;i++)
{
a[i]=i;
if(d[i]>max)
max=d[i];
for(i=0;i<max;i++)
slot[i]=-1;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
if(p[j]<p[j+1])
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
for(i=0;i<n;i++)
j=a[i];
r=d[j];
while(r>=1)
if(slot[r-1]==-1)
{
slot[r-1]=j;
total=total+p[i];
break;
r--;
}
printf("optimal solution is:\n(");
for(i=0;i<max;i++)
printf("j%d",slot[i]+1);
if(i<max-1)
printf(" , ");
}
printf(")");
printf("\nTotal profit:%d",total);
Output:
enter no.of objects5
enter profit10
15
20
enter deadline1
3
optimal solution is:
(j3 , j4 , j2)
Total profit:40