区间DP+石子合并的变相题目

来源:互联网 发布:看舌头知健康 编辑:程序博客网 时间:2024/06/06 14:08
点击打开链接
//  main.cpp//  test//  Created by 吴有堃 on 2017/9/11.//  Copyright © 2017年 吴有堃. All rights reserved.#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string>#include <cstring>#include <string.h>#include <math.h>#include <algorithm>#include <queue>#include <vector>#include <map>#define LL long long#define inf 0x3f3f3f3f#define mod 1e9+7using namespace std;int N=0,Arr[105],dp[105][105]={0};//石子合并 区间DPint main(){    int len=0,i=0,j=0,k=0;    scanf("%d",&N);    for(i=1;i<=N;i++)scanf("%d",&Arr[i]);    memset(dp, 0, sizeof(dp));    for(len=2;len<=N;len++){        for(i=1;i<=N-len;i++){            j=i+len;            dp[i][j]=inf;            for(k=i+1;k<j;k++){                dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+Arr[i]*Arr[k]*Arr[j]);            }        }    }    printf("%d\n",dp[1][N]);    return 0;}