poj2586 贪心算法

来源:互联网 发布:淘宝300多的充气娃娃 编辑:程序博客网 时间:2024/05/02 01:58



自己准备先简单的入门一下ACM  希望能有所进步

一道简单贪心算法   原题目:http://poj.org/problem?id=2586

问题:一个公司在12个月中,有固定盈余s,或固定亏损d两种情况.但记不得哪些月盈余,哪些月亏损,只能记得连续5个月的代数和总是亏损(和<0算亏损),问全年是否可能盈利?若可能,输出可能最大盈利金额,否则输出“Deficit".

 

思路:5个月为一组,一年只有8种情况,我们要做的就是,将亏损的月份尽量往后放,这样使得亏损月尽量少。

先将每个月都当成盈利,从1月开始,算5个月的总和,假如是盈利,把最后一个月设成亏损,再算5个月总和,要是还是盈利,继续依次设置下去。要注意的是,假如一个月盈利大于4个月亏损总和,就只能全亏了。

 

这样设置完之后,把总数加起来,看盈利状况


#include<iostream>int main(){int d,s;int mon[12];int sum;while((scanf("%d%d",&s,&d))==2){sum=0;for(int i=0;i<12;i++)mon[i]=s;for(int i=0;i<8;i++){int start=i;for(int i=0;i<5;i++){if((mon[start]+mon[start+1]+mon[start+2]+mon[start+3]+mon[start+4])>=0){mon[start+4-i]=-d;}else break;}}for(int i=0;i<12;i++)sum=sum+mon[i];if(sum>=0)printf("%d\n",sum);else printf("Deficit\n");}}


0 0