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错误的主要内容,如果未能解决你的问题,请参考以下文章

PAT乙级 1020. 月饼 (25)(只得到23分)

1020 月饼 (25 分)

PAT 1020 月饼

PAT 1020 月饼

PAT 1020. 月饼 (25)

PAT-乙级-1020 月饼