为奶牛DP得到错误的答案?

时间:2014-02-22 13:08:26

标签: 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]);

1 个答案:

答案 0 :(得分: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] );