讨论 / 求助,为什么只能打30分!谢谢各位大神!
qinyiming 2016-12-23 23:32:33
点我顶贴 收藏 删除
#include<stdio.h>

#include<stdlib.h>

#include<time.h>

int main()

{

int N,m,i=0,*a,*b,k=0,min_a,max=0,num=0;

scanf("%d %d",&N,&m);

a=(int *)malloc(sizeof(int)*m);

b=(int *)malloc(sizeof(int)*m);

for(i=0;i<m;i++)scanf("%d %d",&a[i],&b[i]);

min_a=a[0];

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

{

if(a[i]<min_a)min_a=a[i];//找出最小值

}

while(1)

{

k=-1;

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

{

if(a[i]*b[i]>max && N-a[i]>=0)//找出最大值

{

max=a[i]*b[i];

k=i;//记住最大值的下标

}

}

if(k==-1)break;

N-=a[k];

a[k]=0;

num+=max;

max=0;

if(N<min_a)break;

}

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

return 0;

}

查看更多回复
提交回复