为什么我得错了答案。我已经使用了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]);
答案 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] );