#include <stdio.h>
#define S_MAX_SIZE 100
// 选择排序算法,从大到小
void sort(int* a, int *b, int n)
{
for(int i=0; i<n; i++)
{
int max_index=i;
for(int j=i+1; j<n; j++)
{
if(a[j]>a[max_index])
max_index=j;
}
if(max_index != i)
{
int temp = a[i];
a[i] = a[max_index];
a[max_index] = temp;
temp = b[i];
b[i] = b[max_index];
b[max_index] = temp;
}
}
}
int main()
{
/* write your code */
int a, b;
scanf( "%d %d", &a, &b );
int v[S_MAX_SIZE];
int m[S_MAX_SIZE];
for(int i=0; i<a; i++)
{
scanf( "%d %d", &v[i], &m[i] );
}
sort(v,m,a);
int sum=0;
int spare_weight = b;
for(int i=0; i<a;i++)
{
if(spare_weight == 0)
break;
if(m[i]<= spare_weight)
{
sum = sum + v[i]*m[i];
spare_weight -= m[i];
}
else if(m[i]>spare_weight)
{
sum = sum + v[i]*spare_weight;
break;
}
}
printf( "%d", sum );
return(0);
}
算法课作业--背包算法答案
猜你喜欢
转载自blog.csdn.net/sazass/article/details/111148504
今日推荐
周排行