题意:
有一个公司,每个月要么亏损d元,要么盈利s元.一年十二个月,每个月的盈利亏损情况
都不知道,唯一知道的就是,每五个月的总和都是亏损的,1-5,2-6,3-7….8-12.要解决的问
题就是这个公司一年最大能盈利多少钱,输出结果,否则就输出”Deficit”
分析:
题目意思看懂了就好做了.我的思路就是每五个月亏损月份的个数都是一样的,那么选择
亏损的月份尽量都要再其他的月份区间,也就是尽可能的选择后面的月份作为亏损月份,这样
获得的利润就最大.这个就是贪心了.
枚举也可以解决问题
代码:
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
double s,d;
int arr[12];
while(cin>>s>>d)
{
int cns=-1;
for(int i=0;i<12;i++)
arr[i]=s;
//计算需要五个月中需要几个月是亏损的
for(int i=1;i<=5;i++)
{
if((i*d-(5-i)*s) > 0)
{
cns=i;
break;
}
}
if(cns==-1 || cns ==5)
{
cout<<"Deficit"<<endl;
continue;
}
//计算八个区间中每个区间内月份亏损的个数
int i,j,cns02,k;
for(i=0;i<8;i++)
{
cns02=0;
//统计当前区间月份亏损的个数
for(j=i;j<i+5;j++)
{
if(arr[j]<0)
cns02++;
}
k=i+4;
while(cns != cns02)
{
if(arr[k]>0)
{
arr[k]=-d;
k--;
cns02++;
}
}
}
double sum=0;
for(int m=0;m<12;m++)
sum+=arr[m];
if(sum<0)
cout<<"Deficit"<<endl;
else
cout<<sum<<endl;
}
return 0;
}