poj2586——Y2K Accounting Bug

解决公司盈亏问题的贪心算法
本文介绍了一个利用贪心算法解决公司全年最大盈利计算的问题。具体来说,算法根据给定的每月盈利(s)和亏损(d)值,通过调整特定月份的盈亏状态来确保任意连续五个月不会出现总赤字,并最终计算出全年的最大盈利值或是否出现赤字。

题目看得真蛋疼。

意思:一个公司每个月要么盈利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; }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值