一道非常简单的贪心算法,但是要注意输入的价值是单位体积的价值,并不是这个物品的总价值!#include <iostream> #include <stdio.h> #include <algorithm> using namespace std; struct CT{ int pi; int mi; }; int cmp( CT p1 , CT p2 ){ return p1.pi > p2.pi ; } int main() { int sum , V , n ; struct CT ct[110]; while(scanf("%d" , &V)&& V != 0){ scanf("%d",&n); for( int i = 0 ; i < n ; i++ ){ scanf("%d%d" , &ct[i].pi , &ct[i].mi ); } sort(ct , ct+n , cmp ); int flog = 1 ; sum = 0 ; for( int i = 0 ; i < n ; i++ ){ for( int j = 1 ; j <= ct[i].mi ; j++ ){ V-=1; sum+=ct[i].pi; if(V == 0){ flog = 0; break; } } if(flog == 0) break; } printf("%d\n",sum); } return 0; }
时间: 2024-10-12 03:19:08