您的位置:首页 > 其它

HDSaving HDU贪心算法

2015-06-11 17:20 162 查看

Input

输入包含多个测试实例,每个实例的第一行是两个整数v和n(v,n<100),分别表示口袋的容量和宝贝的种类,接着的n行每行包含2个整数pi和mi(0<pi,mi<10),分别表示某种宝贝的单价和对应的体积,v为0的时候结束输入。

Output

对于每个测试实例,请输出XHD最多能取回多少价值的宝贝,每个实例的输出占一行。

#include <iostream>

#include<stdio.h>

#include<algorithm>

using namespace std;

struct Jinzi

{

int dj,tj;

} jinzi[1005];

bool cmp(Jinzi a,Jinzi b)

{

return a.dj>b.dj;

}

int main()

{

int n,m,i;

int max;

while(cin>>m&&m)

// while(scanf("%d%d",&m,&n)!=EOF&&m!=0)

{

cin>>n;

for( i=0; i<n; i++)

{

scanf("%d%d",&jinzi[i].dj,&jinzi[i].tj);

}

sort(jinzi,jinzi+n,cmp);

max=0;

for( i=0; i<n; i++)

{

if(m>=jinzi[i].tj)

{

m-=jinzi[i].tj;

max+=jinzi[i].dj*jinzi[i].tj;

}

else

{

max+=m*jinzi[i].dj;

break;

}

}

printf("%d\n",max);

}

return 0;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: