问题标题: 酷町堂:3919 股票

0
0
已解决
高梓荣
高梓荣
新手天翼
新手天翼
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int a[10005],f[10005];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    f[0]=1;
    for(int i=1;i<=n;i++)
    {
        f[i]=max(f[i],f[i-1]+a[i]);
    }
    cout<<f[n];
    return 0;
}

找错(der)

纯属瞎写

给个思路就行

高梓荣在2020-08-02 17:29:53追加了内容

真棒 找错

#include<iostream>
#include<cstdio>
using namespace std;
int n;
int a[10005],sell[10005],buy[10005],cool[10005];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
	buy[0]=-a[0];
	for(int i=1;i<=n;i++)
	{
		sell[i]=max(buy[i-1]+a[i],sell[i-1]);
		buy[i]=max(cool[i-1]-a[i],buy[i-1]);
		cool[i]=max(cool[i-1],sell[i-1]);
	}
	cout<<sell[n-1];
    return 0;
}

 

高梓荣在2020-08-02 17:30:08追加了内容

真棒 找错

#include<iostream>
#include<cstdio>
using namespace std;
int n;
int a[10005],sell[10005],buy[10005],cool[10005];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
	buy[0]=-a[0];
	for(int i=1;i<=n;i++)
	{
		sell[i]=max(buy[i-1]+a[i],sell[i-1]);
		buy[i]=max(cool[i-1]-a[i],buy[i-1]);
		cool[i]=max(cool[i-1],sell[i-1]);
	}
	cout<<sell[n-1];
    return 0;
}

 


0
已采纳
黄子扬
黄子扬
初级天翼
初级天翼

眼睛没用,建议捐了,您真当别人看不出来这是最大子段和啊,写个别的题的代码让我们来帮您找错,这就是榜一的实力?

 

0
黄子扬
黄子扬
初级天翼
初级天翼

眼睛没用,建议捐了,您真当别人看不出来这是最大子段和啊,写个别的题的代码让我们来帮您找错,这就是榜一的实力?

 

我要回答