标签:+= main mount for 最大值 没有 space printf lse
简单的贪心法,代码如下
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),仍然不能不能满足市场需求,退出循环
标签:+= main mount for 最大值 没有 space printf lse
原文地址:https://www.cnblogs.com/za-chen/p/13235358.html