#include"bits/stdc++.h"

using namespace std;

const int N = 310;
int w[N];
int f[N][N][N];
int n;

int dp(int l, int r, int p) {
    if(l > r) return 0;
    if(f[l][r][p] != -1) return f[l][r][p];
    int ret = 2e9;
    for(int i = l; i<=r ; i++) {
        int left = dp(l,i-1,i);
        int right = dp(i+1,r,i);
        ret = min(ret,left + right + w[i]*w[p]);
    }
    f[l][r][p] = ret;
    return ret;
}

int main() {
    cin >> n;
    memset(f,-1,sizeof f);
    for(int i = 1; i<=n ; i++) cin >> w[i];
    cout << dp(1,n,0);
    return 0;
}
2021-03-05
在牛客打卡4天,今天学习:刷题 14 道/代码提交 24 次
全部评论

相关推荐

点赞 评论 收藏
分享
求个公司要我:接好运
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务