标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 8760 | Accepted: 5484 |
6
10 1 50 50 20 5
3650
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 const int maxn = 105; 6 const int inf = 0x3f3f3f3f; 7 int num[maxn], dp[maxn][maxn]; 8 int n; 9 10 int dfs(int l, int r){ 11 if (abs(l-r) < 2) 12 return 0; 13 if (r-l == 2) 14 return dp[l][r] = num[l]*num[l+1]*num[r]; 15 if (dp[l][r] != inf) 16 return dp[l][r]; 17 for (int i=l+1; i<r; ++i) 18 dp[l][r] = min(dp[l][r], dfs(l, i)+dfs(i, r)+num[l]*num[i]*num[r]); 19 return dp[l][r]; 20 } 21 22 int main(){ 23 while (~scanf("%d", &n)){ 24 for (int i=0; i<n; ++i) 25 scanf("%d", num+i); 26 memset(dp, inf, sizeof(dp)); 27 dfs(0, n-1); 28 printf("%d\n", dp[0][n-1]); 29 } 30 return 0; 31 }
POJ 1651 Multiplication Puzzle
标签:
原文地址:http://www.cnblogs.com/Silenceneo-xw/p/5941353.html