又写了一道水题,不知道算不算贪心。
暂时留着,纪念下。
#include <stdio.h> #include <stdlib.h> struct Node { int JavaBean, Food; }FatMouse[1010]; int cmp(const void *_a, const void *_b) { struct Node *a = (struct Node*)_a; struct Node *b = (struct Node*)_b; return (b->JavaBean * a->Food) - (b->Food * a->JavaBean); } int main() { int cat_food, n, i; int Food[1010], JavaBean[1010]; double max; while (scanf("%d%d", &cat_food, &n) != EOF) { if (cat_food == -1 && n == -1) break; for (i = 0; i < n; i++) scanf("%d%d", &FatMouse[i].JavaBean, &FatMouse[i].Food); qsort(FatMouse, n, sizeof(struct Node), cmp); max = 0; for (i = 0; i < n; i++) { if (cat_food >= FatMouse[i].Food) { cat_food -= FatMouse[i].Food; max += FatMouse[i].JavaBean; } else { max += (double)cat_food * FatMouse[i].JavaBean / FatMouse[i].Food; break; } } printf("%.3lf\n", max); } return 0; }