算法 矩阵连乘 代码问题

问题描述

算法 矩阵连乘 代码问题

#include
#include
#define Num 7
void MatrixChain(int *p,int n,int (*m)[Num],int (*s)[Num]);
void Traceback(int i,int j,int (*s)[Num]);
void main()
{

int p[Num] = {30,35,15,5,10,20,25};
int m[Num][Num];
int s[Num][Num];

MatrixChain(p,Num-1,m,s);

/*for(int i = 1;i<=Num;i++)
{
    for(int j = 1; j<=Num ;j++)
    {
        if(j >= i){
            printf("%d",s[i][j]);
        }
    }
    printf("
");
}*/                           //为什么s[Num][Num]的值没有变呢?

// Traceback(1,Num,s);

}

void MatrixChain(int p,int n,int (*m)[Num],int (*s)[Num])
{
for(int i = 1;i<=n;i++) //初始化对角线
{
m[i][i] = 0;
}
for(int r = 2;r<=n;r++)//多少个对角线
{
for(int i = 1;i < n-r+1;i++) //
*m中行的控制
{
int j = i+r-1; //**m中列的控制

        m[i][j] = m[i+1][j] + p[j-1]*p[i]*p[j];
        s[i][j] = i;

        for(int k = i+1; k<j;k++)
        {
            int t = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];
            if(t < m[i][j])
            {
                m[i][j] = t;        //记录最小值
                s[i][j] = k;       //记录最小的来源
            }
        }
    }
}

}

void Traceback(int i,int j,int (*s)[Num])
{
if(i==j)
{
printf("A%d",i);
}
else
{
printf("(");
Traceback(i,s[i][j],s);
Traceback(s[i][j]+1,j,s);
printf(")");
}
}
//程序一运行貌似是指针越界类问题,就停止了,谢谢指导。

解决方案

http://www.cnblogs.com/Jason-Damon/p/3231547.html
http://blog.sina.com.cn/s/blog_64018c250100s123.html

解决方案二:

矩阵连乘问题的算法分析
算法动态规划问题之矩阵连乘
矩阵连乘问题

时间: 2024-08-31 13:26:48

算法 矩阵连乘 代码问题的相关文章

c++问题-矩阵逆的代码怎么写,求指导?

问题描述 矩阵逆的代码怎么写,求指导? C加加课程设计,写一个求矩阵乘法,逆,数乘,转置,加法的类,求逆不会啊,求帮助,谢谢啦!!!! 解决方案 求一般矩阵的逆矩阵C++代码求方阵的逆矩阵vc代码 解决方案二: iOS文件路径具体江郎才尽 解决方案三: 算法导论上有完整伪代码

链表-求助Java算法,这两个算法问题有Java代码实现

问题描述 求助Java算法,这两个算法问题有Java代码实现 从N个元素集合里面随机抽取M个元素(M<N). C/C++: void randomChoose(int*data, intn, int *result, int m); Java: void randomChoose(int data[], int result[]); 说明: 1.Data是待抽取的元素集合,n是data的长度,result是抽取的结果,m是结果集的长度. 2.同一个元素不能被反复抽取. 3.每个元素被抽取到的概率

源代码-Q学习算法怎样用C++代码实现呢??

问题描述 Q学习算法怎样用C++代码实现呢?? Q学习算法怎样用C++代码实现呢??可以执行的源代码,,谢谢了,,技术小白 解决方案 RSA算法介绍及JAVA实现,其实java和c++差不多,参考一下吧 <一>基础 RSA算法非常简单,概述如下: 找两素数p和q 取n=p*q 取t=(p-1)*(q-1) 取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1) 取d*e%t==1 这样最终得到三个数: n d e 设消息为数M (M <n) 设c=(M**d)%n就得到

求蚁群算法解决旅行商问题的代码

问题描述 求蚁群算法解决旅行商问题的代码 MATLAB解决旅行商问题的代码,在其他网站上的查到的都不能运行,有不少的错误.我刚刚接触MATLAB,不是太会用,求大神帮帮啊 解决方案 ACO蚁群算法解决TSP旅行商问题蚁群算法求解旅行商问题 python

bfo-细菌觅食优化算法迁徙操作的代码

问题描述 细菌觅食优化算法迁徙操作的代码 BFO算法在迁徙部分完成: 对每个细菌随机生成一个概率值,若该值<Ped,则该细菌消亡重新生成一个新的. 目前见到的经典BFO代码的迁徙部分都是这么写的: for m=1:s if Ped>rand % % Generate random number P(1,:,1,1,1)= 50*rand(s,1)'; P(2,:,1,1,1)= .2*rand(s,1)'; %P(3,:,1,1,1)= .2*rand(s,1)'; else P(:,m,1,

一个小岛-眼睛的颜色 算法题我的代码为什么不能通过???一个岛上有n个人

问题描述 眼睛的颜色 算法题我的代码为什么不能通过???一个岛上有n个人 一个岛上有n个人,每个人的眼睛要么是蓝色的,要么是黑色的,并且至少有一个人眼睛是蓝色的.每个人都知道至少一个人眼睛是蓝色的事实,但是不知道具体几个人眼睛是蓝色的.每天所有人互相见面,他们可以看到别人的眼睛的颜色,但是看不到自己眼睛的颜色.别人也不能告诉他眼睛的颜色.如果一个人推断出自己的眼睛是蓝色的,他就会在当天离开.求每个人离开在第几天. 输入格式: 多组数据,每组数据第一行是一个正整数n,表示人数.(2<=n<=10

图文详解Heap Sort堆排序算法及JavaScript的代码实现_基础知识

1. 不得不说说二叉树要了解堆首先得了解一下二叉树,在计算机科学中,二叉树是每个节点最多有两个子树的树结构.通常子树被称作"左子树"(left subtree)和"右子树"(right subtree).二叉树常被用于实现二叉查找树和二叉堆. 二叉树的每个结点至多只有二棵子树(不存在度大于 2 的结点),二叉树的子树有左右之分,次序不能颠倒.二叉树的第 i 层至多有 2i - 1 个结点:深度为 k 的二叉树至多有 2k - 1 个结点:对任何一棵二叉树 T,如果其

k均值算法c++语言实现代码_C 语言

复制代码 代码如下: //k-mean.h #ifndef KMEAN_HEAD #define KMEAN_HEAD  #include <vector> #include <map>  //空间点的定义 class Node {     public:        double pos_x;        double pos_y;        double pos_z;      Node()      {          pos_x = 0.0;          p

ASP中通过该日历算法实现的具体代码_应用技巧

复制代码 代码如下: <style> td { font-family: "宋体"; font-size:9pt} </style> <body bgcolor="eeeeee"> <table width="180" cellpadding="0" cellspacing="1" bgcolor="dddddd" align=center>