Original title
![Insert picture description here](https://img-blog.csdnimg.cn/20210223122208897.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NTAwNTE2,size_16,color_FFFFFF,t_70)
Code implementation (most of the first brush to see the solution)
int maximumScore(int* nums, int numsSize, int* multipliers, int multipliersSize){
long long dp[1010][1010];
int i,j,max;
dp[0][0] = 0;
for(i=0;i<=multipliersSize;i++)
{
for(j=0;i+j<=multipliersSize;j++)
{
if(i || j) dp[i][j] = INT_MIN;
if(i) dp[i][j] = fmax(dp[i][j],dp[i-1][j] + nums[i-1] * multipliers[i+j-1]);
if(j) dp[i][j] = fmax(dp[i][j],dp[i][j-1] + nums[numsSize-j] * multipliers[i+j-1]);
}
}
max = INT_MIN;
for(i=0;i<=multipliersSize;i++)
max = fmax(max,dp[i][multipliersSize-i]);
return max;
}