带时限作业排序(贪心)

给定作业d的最迟完成时间,以及完成该作业所受的收益p

该算法时间复杂度大约是O(n*n)

程序代码:

#include
#include
using namespace std;
struct data{
	int d;
	int p;
}a[110];
bool book[110];
int cmp(data x,data y);
int main()
{
	int n,i,j,sum;
	scanf("%d",&n);
	for(i=0;i0;j--)
				if(book[j]==0)
					break;
			if(j>0)
			{
				sum+=a[i].p;
				book[j]=1;
			}
		}
		else
		{
			sum+=a[i].p;
			book[a[i].d]=1;
		} 
	}
	printf("%d\n",sum);
	return 0;
}
int cmp(data x,data y)
{
	return x.p>y.p;
}

 

你可能感兴趣的:(#,贪心,ACM算法题解)