code[vs] 1048石子合并(区间dp模板)

来源:互联网 发布:淘宝哪里编辑发货地 编辑:程序博客网 时间:2024/06/07 06:00
/*作者:桦清_L*/#include <iostream>  using namespace std;    int sum[111] = {0};  int n,minV;  int dp[111][111] = {0};  int main()  {      cin >> n;      for(int i=1; i<=n; i++)      {        int a;      cin >> a;        sum[i] = sum[i-1] + a;      }      for(int len=2; len<=n; len++) //几个堆合并      {         for(int i=1; i<=n-len+1; i++)  //开始堆号        {          int j=i+len-1;          minV = 0x7fffffff;          for(int k=i; k<j; k++)  //结束堆号        {              minV = min(minV,dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]);  //每一大堆都可分为两堆        }          dp[i][j] = minV;        }      }      cout << dp[1][n];      return 0;  }  

0 0
原创粉丝点击