栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1276 Optimal Array Multip...

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1276 Optimal Array Multip...

#include <stdio.h>#include <iostream>#define MAX 11using namespace std;int dp[MAX][MAX],path[MAX][MAX],data[MAX];int n;void Init(){    int i=0,j=1,m=n;    while(m--)    {        scanf("%d%d",&data[i],&data[j]);        i++;        j++;    }}void MatrixChain(){    int i,j,k,r;    for(i=1;i<=n;i++)        dp[i][i]=0;    for(r=2;r<=n;r++)        for(i=1;i<=n-r+1;i++)        { j=i+r-1; dp[i][j]=dp[i][i]+dp[i+1][j]+data[i-1]*data[i]*data[j]; path[i][j]=i;  for(k=i+1;k<j;k++) {     int temp=dp[i][k]+dp[k+1][j]+data[i-1]*data[k]*data[j];     if(temp<dp[i][j])     {         dp[i][j]=temp;         path[i][j]=k;     }      }        }}void TraceBack(int i,int j){    if(i==j)    {        cout<<"A"<<i;    }    else if(i==j-1)    {        cout<<"A"<<i<<" x A"<<j;    }    else    {        if(i!=path[i][j])  cout << "(";        TraceBack(i,path[i][j]);        if (i!=path[i][j])  cout<<") x ";         else  cout<<" x ";        if (path[i][j]+1!=j)  cout<<"(";        TraceBack(path[i][j]+1,j);        if (path[i][j]+1!=j)  cout << ")";    }}int main(){    int zz=1;    while(scanf("%d",&n)!=EOF&&n!=0)    {        Init();        MatrixChain();        printf("Case %d: (",zz++);        TraceBack(1,n);        printf(")n");    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374317.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号