| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:给的数据过了,怎是wa啊In Reply To:Re:给的数据过了,怎是wa啊 Posted by:lithum at 2009-08-05 14:49:03 > //此题实际上是一个矩阵连乘问题
> //dp[i][j]=min{dp[i][k-1]+dp[k+1][j]+arr[k]*arr[i-1]*arr[j+1] | k}
> #include<iostream>
> using namespace std;
>
> const int INFINITY=200000000;
>
> int arr[100];
> int dp[100][100];
> int main()
> {
> //freopen("input.txt","r",stdin);
> memset(dp,0,sizeof(dp));
> int i,j,k;
> int length;
> int n;
> int Min,temp;
> cin>>n;
> for(i=0;i<n;i++) cin>>arr[i];
> for(i=1;i<n-1;i++) dp[i][i]=arr[i-1]*arr[i]*arr[i+1];
> for(length=2;length<=n-2;length++){
> for(i=1,j=i+length-1 ; j<=n-2 ; i++,j++){
> Min=INFINITY;
> for(k=i;k<=j;k++){
> temp=dp[i][k-1]+dp[k+1][j]+arr[k]*arr[i-1]*arr[j+1];
> Min=(temp<Min)?temp:Min;
> }
> dp[i][j]=Min;
> }
> }
> cout<<dp[1][n-2]<<endl;
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator