码迷,mamicode.com
首页 > 其他好文 > 详细

poj1651 区间dp

时间:2014-08-17 11:35:32      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   for   ar   

bubuko.com,布布扣
 1 //Accepted    200 KB    0 ms
 2 //dp区间
 3 //dp[i][j]=min(dp[i][k]+dp[k][j]+a[i]*a[k]*a[j]) i<k<j
 4 #include <cstdio>
 5 #include <cstring>
 6 #include <iostream>
 7 using namespace std;
 8 const int imax_n = 105;
 9 const int Pinf = 100000000;
10 int dp[imax_n][imax_n];
11 int a[imax_n];
12 int n;
13 int min(int a,int b)
14 {
15     return a<b?a:b;
16 }
17 void Dp()
18 {
19     for (int i=1;i<=n-2;i++)
20     dp[i][i+2]=a[i]*a[i+1]*a[i+2];
21     for (int l=4;l<=n;l++)
22     {
23         for (int i=1;i<=n;i++)
24         {
25             int j=i+l-1;
26             if (j>n) break;
27             dp[i][j]=Pinf;
28             for (int k=i+1;k<j;k++)
29             dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+a[i]*a[k]*a[j]);
30             //printf("dp[%d][%d]=%d\n",i,j,dp[i][j]);
31         }
32     }
33     printf("%d\n",dp[1][n]);
34 }
35 int main()
36 {
37     while (scanf("%d",&n)!=EOF)
38     {
39         for (int i=1;i<=n;i++)
40         scanf("%d",&a[i]);
41         Dp();
42     }
43     return 0;
44 }
View Code

 

poj1651 区间dp,布布扣,bubuko.com

poj1651 区间dp

标签:style   blog   http   color   os   io   for   ar   

原文地址:http://www.cnblogs.com/djingjing/p/3917478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!