這裏省略對p[N]排序
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#define N 3
int getMin(int *p,int* r,int t)
{
int j=-1;
for(int i=0;i<N;i++)
{
if(r[i]<=t && p[i]>0)
{
j=i;
break;
}
}
return j;
}
bool isShortest(int *p,int j)
{
bool b=true;
for(int i=0;i<j;i++)
{
if(p[i]>0)
b=false;
}
return b;
}
int greedy(int *p,int* r)
{
int sum=0,t=0,j=getMin(p,r,t);
while(j!=-1)
{
if(isShortest(p,j))
{
t+=p[j];
sum+=t;
p[j]=0;
}
else
{
t++;
p[j]--;
sum+=t;
}
j=getMin(p,r,t);
}
return sum;
}
void main()
{
int p[N]={2,4,9};
int r[N]={1,3,0};
int t=greedy(p,r);
printf("%d\n",t);
getchar();
}