0
点赞
收藏
分享

微信扫一扫

【JavaScript】动态监听iframe高度以及监听iframe内部链接跳转

凶猛的小白兔 2023-06-03 阅读 52

目录

股票买卖II

 本题思路

关于异常值的解释 

代码 

 股票买卖III

 本题思路 (包括对交易过程的理解,需认真理解)

代码

股票买卖 IV 

本题思路 

 代码


股票买卖II

 输入样例

6
7 1 5 3 6 4

输出样例

7

输入样例 

5
1 2 3 4 5

输出样例 

4

 本题思路

关于异常值的解释 

代码 

// 两种情况
// 1.第i天手中是否有股票(0:没有,1:有)
// f[i][0]=max(f[i-1][0],f[i-1][1]+a)
// f[i][1]=max(f[i-1][1],f[i-1][0]-a)

#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int f[N][2];
int n;

int main()
{
    cin>>n;
    f[0][1]=-0x3f3f3f3f;
    //刚开始以为可以省略,但是
    //前i-1天不可能出现,f[0][1]的情况(
    //观察f[i][0]的状态如果这个不特殊处理,第一波就会出错)
    //但是会出现f[0][0]
    //而且一共1e5个数大小10000,然后f[0][1]就取4个3f
    //我第一次取得一个-0x3f,然后在第1000组数据就WA了
    for(int i=1;i<=n;i++)
    {
        int a;
        scanf("%d",&a);
        
        f[i][0]=max(f[i-1][0],f[i-1][1]+a);
        f[i][1]=max(f[i-1][1],f[i-1][0]-a);
    }
    
    cout<<f[n][0];
    return 0;
}

 股票买卖III

输入样例: 

8
3 3 5 0 0 3 1 4

输出样例:

6

输入样例:

5
1 2 3 4 5

输出样例: 

4

 本题思路 (包括对交易过程的理解,需认真理解)

好了话不多说

代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int f[N][3][2];
int n;

int main()
{
    cin>>n;
    
    memset(f,-0x3f3f3f3f,sizeof f);
    f[0][0][0]=0;
    for(int i=1;i<=n;i++)
    {
        int a;
        scanf("%d",&a);
        f[i][0][0]=0;
        for(int k=1;k<=2;k++)
        {
            f[i][k][0]=max(f[i-1][k][0],f[i-1][k][1]+a);
            f[i][k][1]=max(f[i-1][k][1],f[i-1][k-1][0]-a);
        }
    }
    int ma = -0x3f3f3f3f;
    for(int k = 0; k <= 2; k++)
    {
        ma = max(ma, f[n][k][0]);
    }
    cout<<ma;
    return 0;
}

股票买卖 IV 

输入样例:

3 2
2 4 1

输出样例:

2

输入样例:

6 2
3 2 6 5 0 3

输出样例:

7

本题思路 

 代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int f[N][110][3];

int main()
{
    int n,k;
    cin>>n>>k;
    memset(f,-0x3f3f3f3f,sizeof f);
    f[0][0][0]=0;
    for(int i=1;i<=n;i++)
    {
        int a;
        scanf("%d",&a);
        f[i][0][0]=0;
        
        for(int j=1;j<=k;j++)
        {
            f[i][j][0]=max(f[i-1][j][0],f[i-1][j][1]+a);
            f[i][j][1]=max(f[i-1][j][1],f[i-1][j-1][0]-a);
        }
    }
    int ma=-0x3f3f3f3f;
    
    for(int j=0;j<=k;j++)
    {
        ma=max(ma,f[n][j][0]);
    }
    cout<<ma;
    return 0;
}

举报

相关推荐

0 条评论