需要记忆的头代码!!
#include<algorithm>
using namespace std;
#include <stdio.h>
#include <iostream>
#include<algorithm>
using namespace std;
struct node
{
int x;
int y;
double z;
}p[1005];
int cmp(node a,node b)
{
return a.z>b.z;
}
int main()
{
int n,m;
while(scanf("%d%d",&m,&n)&&m>=0&&n>=0)
{
int i;
double s=0.0;
for(i=0;i<n;i++)
{
scanf("%d%d",&p[i].x,&p[i].y);
p[i].z=p[i].x*1.0/p[i].y;
}
sort(p,p+n,cmp);//核心步骤,将收益最高的交换方式放在最前面
for(i=0;i<n;i++)
{
if(m>=p[i].y)
{
s=s+p[i].x;
m=m-p[i].y;
}
else
{
s=s+m*p[i].z;
break;
}
}
printf("%.3f\n",s);
}
return 0;
贪心模块做的第一道题目
1.结构体(简洁,输出方便)
2.多数用到sort进行排序。