poj2586

来源:互联网 发布:虚拟专用网络 博客 编辑:程序博客网 时间:2024/05/22 04:59

poj2586一开始连题目都没有看懂,捂脸。后来也是搜了中文题目解说,才看懂了题目。再次感谢大神们。。。
题目大致意思就是某公司每个月要么盈利s元,要么亏损d元,一年之中任意连续的五个月的利润和是亏损的,最后问一年的总收入是多少,如果盈利即输出数额,如果亏损,则输出Deficit。直接去枚举所有的情况分析也是可以的,因为出现的情况并不复杂也不多。
有大神是先分析好所有出现的情况:
1.如果4s小于d,则连续五个月中只要有一个月是亏损即可,此时情况是:前五个月(1、2、3 、4、5)中最后一个月五月为亏损,第二个连续五个月(23456)也满足需求,一直到678910这五个月选择10月为亏损,此时所有剩下的连续五个月都是满足情况的。
2.如果3s小于2d,即连续五个月中只要有两个月都是亏损即满足情况,分析略。。详细见http://blog.sina.com.cn/s/blog_676070110100yubd.html
但是我是本着熟悉各种算法的想法刷的oj啦,本题纯用贪心思想编写算法即可。也就是说先假设所有的月均为盈利,判断第一个连续五月是亏损,如果不亏损,将最后一个月设为亏损,再次判断如果仍亏损的话让倒数第二个月设为亏损。。直到满足情况为止。依次判断8个连续的五月,最后检查总情况。下面是a的代码啦:

#include <stdio.h>#include <stdlib.h>int month[12];int add(int m[],int n){    int i=0,result=0;    for(i=n;i<n+5;i++)        result=result+m[i];    return result;}int main(){    int d,s;    while(scanf("%d",&s)==1&&s>0&&scanf("%d",&d)==1&&d>0){        d=-d;        int i=0;        for(i=0;i<12;i++)        month[i]=s;        int j;        for(i=0;i<8;i++){            for(j=1;j<=5;j++){            int flag=add(month,i);                if(flag>=0)                    month[i+5-j]=d;                else break;            }        }         int all=0;        for(i=0;i<12;i++)        all+=month[i];        if(all>0)        printf("%d\n",all);        else        printf("Deficit\n");      }    return 0;}

PS:本程序也是看了http://zwqgo.blog.51cto.com/5034341/1142046,十分感谢!!

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 做完运动脊椎中间痛怎么办? 阴虛阴虚火旺怎么办 脸一躺下就丑怎么办 身体淤堵的厉害怎么办 怀孕晚期脚肿了怎么办 宝宝感冒咳嗽流鼻涕流泪怎么办 孕晚期睡觉习惯面朝右怎么办 鼻涕一直不停的流怎么办 宝宝一直流清鼻涕怎么办 感冒了眼睛酸胀流泪怎么办 五个月宝宝感冒流鼻涕怎么办 六个月宝宝感冒流鼻涕怎么办 一岁宝宝感冒咳嗽流鼻涕怎么办 七个月宝宝感冒流鼻涕咳嗽怎么办 孩子握笔姿势不正确怎么办 走久了脚底板痛怎么办 不会给宝宝拍嗝怎么办 打了肉毒素淤青怎么办 新生儿一吃母乳就睡觉怎么办 10岁半宝宝缺钾怎么办 宝宝吃不到乳晕怎么办 喂母乳乳头破了怎么办 宝宝吸了乳头痛怎么办 喂母乳奶头很疼怎么办 孩子吸的乳头痛怎么办 新生儿一直睡觉不吸吮怎么办 新生儿光睡觉不吃奶怎么办 婴儿不吸母亲的奶怎么办 肾里有结石一直不掉下来怎么办 宝宝拍不出来嗝怎么办 未满月宝宝溢奶怎么办 吃母乳老是吐奶怎么办 宝宝吃母乳吐奶怎么办 新生儿三天没大便了怎么办 奶水多宝宝呛奶怎么办 婴儿的含乳姿势不正确怎么办 一个月竖着抱了怎么办 乳头被婴儿吸痛怎么办 婴儿从鼻孔吐奶怎么办 宝宝习惯含着乳头睡觉怎么办? 宝宝习惯奶瓶不吃乳头怎么办