51nod 1021 石子归并

来源:互联网 发布:传奇霸业 知乎 编辑:程序博客网 时间:2024/06/14 03:46

基础dp题


联想上学期学过的加括号问题/矩阵连乘问题

其实就是对一个大问题,找一个分割,使得这种分割满足最优子结构

没看四边形优化的解,就这样吧先。。这代码还多数是copy别人的,边写边学吧。


//@auther zhou//@Number 201408070203//@start time://@finish time:/*@此处注意:*//* 测试数据*/#include<iostream>#include<cstring>#include<vector>#include<cmath>#include<algorithm>using namespace std;#define inf 1e9int main(){int n;cin>>n;//vector<int > a;//vector<int> total;int a[105]={0};int total[105]={0};int temp,ans=0;for(int i=1;i<=n;i++){cin>>temp;ans+=temp;//total.push_back(ans);//a.push_back(temp);a[i]=temp;total[i]=ans;}//for(int i=1;i<=n;i++){//cout<<a[i]<< " "<<total[i]<<endl;//}int dp[105][105];memset(dp,inf,sizeof(dp));for(int i=1;i<=n+1;i++)dp[i][i]=0;int j=0;for(int width=2;width<=n;width++){//widthfor(int i=1;i<=n-width+1;i++){//startj=i+width-1;//enddp[i][j]=inf;for(int k=i;k<=j-1;k++){//loop cut indextemp=total[j]-total[i-1];dp[i][j]=min(dp[i][k]+dp[k+1][j]+temp,dp[i][j]);}}}cout<<dp[1][n];return 0;}


0 0
原创粉丝点击