题目看得真蛋疼。
意思:一个公司每个月要么盈利s,要么亏了d。并且每连续5个月的收支为赤字。求该公司全年最大盈利。如果为赤字,输出"Deficit"。
思路:贪心。
#include<iostream> #include<string> #include<cstdio> using namespace std; int def[13]; int main() { int s,d,i,j; while(scanf("%d%d",&s,&d)!=EOF) { for(i=1;i<=12;i++) def[i]=s; int cit=-1*d; if(s*4<d) { def[5]=cit; def[10]=cit; } else if(s*3<d*2) { def[4]=cit; def[5]=cit; def[9]=cit; def[10]=cit; } else if(s*2<d*3) { for(i=3;i<=5;i++) def[i]=cit; for(i=8;i<=10;i++) def[i]=cit; } else if(s<d*4) { for(i=2;i<=5;i++) def[i]=cit; for(i=7;i<11;i++) def[i]=cit; def[12]=cit; } else { for(i=1;i<=12;i++) def[i]=cit; } cit=0; for(i=1;i<=12;i++) cit+=def[i]; if(cit>0) cout<<cit<<endl; else cout<<"Deficit"<<endl; } return 0; }
解决公司盈亏问题的贪心算法
本文介绍了一个利用贪心算法解决公司全年最大盈利计算的问题。具体来说,算法根据给定的每月盈利(s)和亏损(d)值,通过调整特定月份的盈亏状态来确保任意连续五个月不会出现总赤字,并最终计算出全年的最大盈利值或是否出现赤字。
880

被折叠的 条评论
为什么被折叠?



