Description:
Accept:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 301;
int n, a[maxn], dp[maxn][maxn];
int Solution(int i, int j) {
if (dp[i][j] != -1)
return dp[i][j];
if (i == j)
return dp[i][j] = 0;
if (i + 1 == j)
return dp[i][j] = a[i - 1] * a[i] * a[j];
int ans = 0x3f3f3f3f;
for (int k = i; k < j; k++) {
ans = min(ans, Solution(i, k) + Solution(k + 1, j) + a[i - 1] * a[k] * a[j]);
}
dp[i][j] = ans;
return ans;
}
int main() {
while (cin >> n) {
for (int i = 0; i < n + 1; i++)
cin >> a[i];
memset(dp, -1, sizeof(dp));
int ans = Solution(1, n);
cout << ans << endl;
}
return 0;
}