PAT 1020 月饼
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT 1020 月饼相关的知识,希望对你有一定的参考价值。
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。
注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18、15、10万吨,总售价分别为75、72、45亿元。如果市场的最大需求量只有20万吨,那么我们最大收益策略应该是卖出全部15万吨第2种月饼、以及5万吨第3种月饼,获得 72 + 45/2 = 94.5(亿元)。
输入格式:
每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N表示月饼的种类数、以及不超过500(以万吨为单位)的正整数D表示市场最大需求量。随后一行给出N个正数表示每种月饼的库存量(以万吨为单位);最后一行给出N个正数表示每种月饼的总售价(以亿元为单位)。数字间以空格分隔。
输出格式:
对每组测试用例,在一行中输出最大收益,以亿元为单位并精确到小数点后2位。
输入样例:
3 20 18 15 10 75 72 45
输出样例:
94.50
代码提交了,测试点2错误,为什么会错误?以下是提交代码:
1 /* 2 * main.c 3 * 4 * Created on: 2016年6月23日 5 * Author: Will 6 */ 7 8 #include <stdio.h> 9 #include <stdlib.h> 10 11 typedef struct mooncakeInfo 12 { 13 int storeNum; 14 double price; 15 }mooncakeInfo; 16 17 typedef mooncakeInfo *mooncakeInfoPtr; 18 19 void sortArray(mooncakeInfoPtr array[], int cnt); 20 21 int main(void) 22 { 23 int kinds = 0; 24 int i; 25 int totalPrice = 0; 26 int totalNum = 0; 27 int tempNum = 0; 28 double income = 0.0; 29 30 mooncakeInfoPtr *moon; 31 mooncakeInfoPtr newPtr; 32 33 scanf("%d %d", &kinds, &totalNum); 34 // printf("%d %d\n", kinds, totalNum); 35 36 moon = malloc(kinds * sizeof(mooncakeInfoPtr)); 37 38 if(moon) 39 { 40 for(i = 0; i < kinds; i++) 41 { 42 newPtr = malloc(sizeof(mooncakeInfo)); 43 44 if(newPtr) 45 { 46 scanf("%d", &newPtr->storeNum); 47 moon[i] = newPtr; 48 } 49 } 50 51 for(i = 0; i < kinds; i++) 52 { 53 scanf("%d", &totalPrice); 54 moon[i]->price = 1.0 * totalPrice / moon[i]->storeNum; 55 } 56 } 57 58 sortArray(moon, kinds); 59 60 tempNum = totalNum; 61 62 for(i = 0; i < kinds; i++) 63 { 64 if(tempNum <= moon[i]->storeNum) 65 { 66 income += moon[i]->price * tempNum; 67 break; 68 } 69 else 70 { 71 income += moon[i]->price * moon[i]->storeNum; 72 tempNum -= moon[i]->storeNum; 73 } 74 } 75 76 printf("%.2f", income); 77 78 return 0; 79 } 80 81 void sortArray(mooncakeInfoPtr array[], int cnt) 82 { 83 int i, j; 84 mooncakeInfoPtr temp = NULL; 85 86 for(i = 0; i < cnt; i++) 87 { 88 for(j = i; j < cnt; j++) 89 { 90 if(array[j]->price > array[i]->price) 91 { 92 temp = array[i]; 93 array[i] = array[j]; 94 array[j] = temp; 95 } 96 } 97 } 98 } 99 100 /* END OF FILE */
具体方法就是先按单价对不同种类月饼降序排序,然后从前往后销售,哪里不对吗?
以上是关于PAT 1020 月饼的主要内容,如果未能解决你的问题,请参考以下文章