PAT 1020 月饼 测试点3错误
Posted za-chen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT 1020 月饼 测试点3错误相关的知识,希望对你有一定的参考价值。
简单的贪心法,代码如下
1 #include <iostream> 2 #include<stdio.h> 3 double amount[1000]; 4 double price[1000]; 5 using namespace std; 6 int getMax(int n){ 7 int result=0; 8 for(int i=0;i<n;i++){ 9 if(price[i]>price[result]) result=i; 10 } 11 return result; 12 } 13 int main() 14 { 15 int n; 16 double max_require; 17 cin>>n; 18 cin>>max_require; 19 for(int i=0;i<n;i++){ 20 cin>>amount[i]; 21 } 22 for(int i=0;i<n;i++){ 23 cin>>price[i]; 24 } 25 for(int i=0;i<n;i++){ 26 price[i]=price[i]/amount[i]; 27 } 28 int sell; 29 double sold_amount=0; 30 double in_come; 31 while(true){ 32 sell=getMax(n); 33 if(price[sell]==-1) break; 34 if((amount[sell]+sold_amount)<max_require){ 35 sold_amount+=amount[sell]; 36 in_come+=price[sell]*amount[sell]; 37 price[sell]=-1; 38 } 39 else{ 40 in_come+=price[sell]*(max_require-sold_amount); 41 break; 42 } 43 } 44 printf("%.2f",in_come); 45 }
测试点3错误的原因是:没有考虑所有库存相加都无法满足市场需求的情况,加上代码中第33行测试通过,该行代码表示所有月饼都卖出了(所有price都是-1了,因此最大值自然是-1),仍然不能不能满足市场需求,退出循环
以上是关于PAT 1020 月饼 测试点3错误的主要内容,如果未能解决你的问题,请参考以下文章