龙星尘 2022-12-31 15:13 采纳率: 42.9%
浏览 32
已结题

关于#C++动态规划#的问题,如何解决?

希望能帮忙解决一下今天不会的题(应该是动态规划):

img

img

img

最好是C++的代码加上思路!谢谢

  • 写回答

2条回答 默认 最新

  • xxxhugo5 2022-12-31 17:08
    关注

    这是一道动态规划题目。

    我们可以使用自底向上的方法来求解这道题目。

    首先我们可以定义一个数组dp[i]表示到第i个时间结点的最大收获。

    具体来说,我们可以从小到大循环每个时间结点i,对于每个时间结点i,我们可以循环每个指向它的时间结点j,如果有多个指向它的时间结点j,则取收获最大的那个即可。

    最终结果就是dp[n],即最后一个时间结点的最大收获值。

    具体代码如下:

    int n;
    int v[MAX_N];
    int f[MAX_N];
    int dp[MAX_N];
    
    int main()
    {
        cin >> n;
        for (int i = 1; i <= n; i++) cin >> v[i];
        for (int i = 1; i <= n; i++) cin >> f[i];
    
        for (int i = n; i >= 1; i--)
        {
            if (f[i] == 0) dp[i] = v[i];
            else
            {
                dp[i] = v[i];
                for (int j = f[i]; j != 0; j = f[j]) dp[i]
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月10日
  • 已采纳回答 1月2日
  • 创建了问题 12月31日

悬赏问题

  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄