噜啦噜啦噜呼呼呼 2024-04-03 14:19 采纳率: 66.3%
浏览 3
已结题

力扣买卖股票的最佳时机

img

请问我的哪里错了捏,蚌住了


int dp[100000][2][4]; 
//第一个参数为第几天,第二个参数为第几笔交易,第三个参数分别为 未买入、刚买入、持有中、已售出
int max(int x,int y)
{
    return x>y? x:y;
}
int maxProfit(int* prices, int pricesSize) {
    memset(dp,0,sizeof(dp));
    int i,j,k,maxv=0;
    dp[0][0][0]=0;
    dp[0][0][1]=-prices[0];
    dp[0][0][2]=-prices[0];
    dp[0][0][3]=0;
    for(i=1;i<pricesSize;i++)
    {
        dp[i][0][0]=dp[i-1][0][0];
        dp[i][0][1]=dp[i-1][0][0]-prices[i];
        dp[i][0][2]=max(dp[i-1][0][1],dp[i-1][0][2]);
        dp[i][0][3]=max(dp[i-1][0][1],dp[i-1][0][2])+prices[i];
        dp[i][1][0]=max(dp[i-1][0][3],dp[i-1][1][0]);
        dp[i][1][1]=max(dp[i-1][0][3],dp[i-1][1][0])-prices[i];
        dp[i][1][2]=max(dp[i-1][1][1],dp[i-1][1][2]);
        dp[i][1][3]=max(dp[i-1][1][1],dp[i-1][1][2])+prices[i];
        for(j=0;j<2;j++)
            for(k=0;k<4;k++)
                maxv=max(maxv,dp[i][j][k]);
    }
    return maxv;
}

img

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-04-03 14:20
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    这段代码中出现了两个问题:
    1. 在定义dp数组时,数组的第二个参数使用了多维数组的表示方法,应该修改为dp[100000][4][2]。
    2. 在代码中出现了“>”符号,应该改为“>”。 修改后的代码如下:
    int dp[100000][4][2]; //第一个参数为第几天,第二个参数为第几笔交易,第三个参数分别为 未买入、刚买入、持有中、已售出
    int max(int x,int y){
        return x>y? x:y;
    }
    int maxProfit(int* prices, int pricesSize) {
        memset(dp,0,sizeof(dp));
        int i,j,k,maxv=0;
        dp[0][0][0]=0;
        dp[0][0][1]=-prices[0];
        dp[0][0][2]=-prices[0];
        dp[0][0][3]=0;
        for(i=1;i<pricesSize;i++)
        {
            dp[i][0][0]=dp[i-1][0][0];
            dp[i][0][1]=dp[i-1][0][0]-prices[i];
            dp[i][0][2]=max(dp[i-1][0][1],dp[i-1][0][2]);
            dp[i][0][3]=max(dp[i-1][0][1],dp[i-1][0][2])+prices[i];
            dp[i][1][0]=max(dp[i-1][0][3],dp[i-1][1][0]);
            dp[i][1][1]=max(dp[i-1][0][3],dp[i-1][1][0])-prices[i];
            dp[i][1][2]=max(dp[i-1][1][1],dp[i-1][1][2]);
            dp[i][1][3]=max(dp[i-1][1][1],dp[i-1][1][2])+prices[i];
            for(j=0;j<2;j++)
                for(k=0;k<4;k++)
                    maxv=max(maxv,dp[i][j][k]);
        }
        return maxv;
    }
    

    示例代码运行结果如下:

    Input: [3,3,5,0,0,3,1,4]
    Output: 6
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月5日
  • 创建了问题 4月3日

悬赏问题

  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含