计蒜客--合并石子

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define INF 0x3f3f3f3f 
using namespace std;
int a[11]={13,1,45,7,20,4,19,13,40,33,38};
int vis[11]={0};
int dp[11][11]={0};
int main(){
    vis[0]=a[0];
    for(int i=0;i<11;i++){
        vis[i]=vis[i-1]+a[i];
    }
    for(int l=2;l<=11;l++){
        for(int i=0;i<11;i++){
            int j=l+i-1;
            int sum=vis[j]-vis[i-1];
            dp[i][j]=INF;
            for(int k=i;k<=j&&j<11;k++){
                dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+sum);
            }
        }
    }
    printf("%d",dp[0][10]);
    return 0;
}


 

 

posted @ 2018-04-08 23:09  柠檬不酸i  阅读(94)  评论(0)    收藏  举报