c++ - spoj 对待奶牛 DP 得到错误的答案?

标签 c++ c

为什么我得到错误的答案。我使用了 DP 并将表格自下而上填充。

http://www.spoj.com/problems/TRT/

for(int i=0;i<n;i++)
    {
        dp[i][i]=n*a[i];
    }

    for(int i=n-2;i>=0;i--)
    {
        for(int j=i+1;j<n;j++)
        {
            dp[i][j]=max((i+1)*a[i]+dp[i+1][j],dp[i][j-1]+(i+1)*a[j]);//(i+1) is the age

        }
    }
    printf("%d\n",dp[0][n-1]);

最佳答案

年龄不会是i+1。它将是 n+i-j。

dp[i][j] = max(  (n+i-j)*a[i]+dp[i+1][j],  dp[i][j-1] + (n+i-j)*a[j] );

关于c++ - spoj 对待奶牛 DP 得到错误的答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21954755/

相关文章:

c++ - _CRT_DEBUGGER_HOOK 抛出异常

C - Pthreads,一个消费者,多个生产者同步

c - 彩票模拟编译问题

c++ - 如何在 OS X 中检查用户名/密码组合?

c++ - 跟踪变量访问(c/c++)?

C++ UTF-8 轻量级和宽松代码?

c++ - 在循环迭代期间在 vector 中保存对 void 指针的引用

c - 打印数字 4 的出现次数。 - CodeChef

c - 使用最多 10 个值初始化堆栈

c - Do...While 和 getche() 在 C 中