点击(此处)折叠或打开
- #include <iostream>
- #include <stdio.h>
- #include<cstring>
-
- using namespace std;
-
- #define MAX_V 10
- int P[MAX_V];
-
- #define inf (2000000000)
-
- int m[MAX_V][MAX_V],s[MAX_V][MAX_V];
- int n;
-
- void print(int i,int j)
- {
- int k = s[i][j];
-
- if(i == j)
- {
- printf("A%d",i);
- return;
- }
-
- printf("(");
- print(i,k);
- print(k+1,j);
- printf(")");
-
- }
-
- void solve()
- {
- int l=0;
-
- memset(m,0,sizeof(m));
- memset(s,0,sizeof(s));
-
- for(int i=1;i<=n;i++)
- m[i][i] = 0;
-
- for(l=2;l<=n;l++) // l is chain len
- {
-
- for(int i=1;i<=n-(l-1);i++)
- {
- int j=i+(l-1);
- int minl = inf;
-
- for(int k=i;k<j;k++)
- {
- int kl = m[i][k] + m[k+1][j]+P[i-1]*P[k]*P[j];
- if(kl < minl)
- {
- minl = kl;
- s[i][j] =k;
- }
- }
-
- m[i][j] = minl;
- }
- }
-
- cout<<"min matrix * nums is :"<<m[1][n]<<endl;
- cout<<"min matrix * path is :"<<endl;
- print(1,n);
- }
-
-
- int main()
- {
- cin>>n;
- for(int i=0;i<=n;i++)
- cin >> P[i];
-
- solve();
- }
点击(此处)折叠或打开
- 6
- 30 35 15 5 10 20 25
相关热门文章
给主人留下些什么吧!~~
评论热议