hdoj1009 FatMouse' Trade——贪心算法
贪心思路:按单位猫粮能兑换到的javaBean从大到小将组合进行排序,总是在当前兑换尽可能多的javabeans
问题描述:点击打开链接 hdoj1009 FatMouse's Trade
源代码:
#include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <iostream> #include <algorithm> using namespace std; struct change { int j; int f; double g; }a[1000]; int cmp(change a,change b) { return a.g>b.g; } int main() { int m,n; int i; while(cin>>m>>n&&!(n==-1&&m==-1)) { for(i=0;i<n;i++) { cin>>a[i].j>>a[i].f; a[i].g=a[i].j*1.0/a[i].f; } sort(a,a+n,cmp); double maxi=0; for(i=0;i<n;i++) { if(a[i].f<=m) { maxi+=a[i].j; m-=a[i].f; } else { maxi+=m*a[i].g; m=0; } } printf("%.3lf\n",maxi); } return 0; }