矩阵连乘问题,为什么运行不了?

一运行就说XXX.exe已停止工作#include<iostream>usingnamespacestd;voidMatrixChain(int*p,intn,int**... 一运行就说XXX.exe已停止工作

#include<iostream>
using namespace std;
void MatrixChain(int *p,int n,int **m,int **s){//m[i][j]表示第i个矩阵乘到第j个矩阵需要做的乘法次数,s[i][j]
//表示在第i个矩阵和第j个矩阵间加括号隔开
for(int i=1;i<=n;i++)m[i][i]=0;
for(int r=2;r<=n;r++)//倒数第R行
for(int i=1;i<=n+1-r;i++){
int j=i+r-1;
m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j];
s[i][j]=i;
for(int k=i+1;k<j;k++){
int t=m[i][k]+m[i+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){
if(i==j){cout<<"A"<<i;return;}
cout<<"(";
Traceback(i,s[i][j],s);
Traceback(s[i][j]+1,j,s);
cout<<")";
}

int main(){
int p[7]={30,35,15,5,10,20,25};//存矩阵的行列信息的
int **m=new int *[6];
int **s=new int *[6];
MatrixChain(p,6,m,s);
Traceback(1,6,s);
}

有木有大神帮忙看看 感激不尽!!!
展开
 我来答
金色潜鸟
2013-11-16 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5947万
展开全部
不是所有矩阵都可以互相相乘 !大多数矩阵 不可以 相乘。

A 矩阵 X B 矩阵, 只有 当 A 的列数 等于 B的 行数 才可以 乘,
得出的 C 矩阵 行数 同 A 的行数, 列数 同 B的列数。

A X B 可以时,B X A 往往不可以,除非是方阵。

你要 矩阵连乘,有一个依次乘的顺序,必需保证 每次乘时 新的前矩阵列数 等于 新的 后矩阵 行数。否则 乘法 不成立。
追问
先谢谢啊   不过我输入的矩阵是可以连乘的呃。。。
追答
那你就要看你乘法运算本身是否写对,写对了,连续调用就是了。
各矩阵的行和列是多少,我没看出来。全是6x6?

这里给你一个矩阵乘法函数,你可以直接调用。
已知 a,b 计算出 c.
void matrix2(int *a,int *b, int *c, int a_row, int b_col, int b_row)
{
int i,j,k;
int a_col,c_row,c_col;
a_col=b_row; c_row=a_row; c_col=b_col;
for(j=0;j<c_row;j++){
for(i=0;i<c_col;i++){
c[j*c_col+i]=0;
for(k=0;k<a_col;k++) c[j*c_col+i]+= a[j*a_col+k] * b[k*b_col+i];
};
};
}
你可以循环调用。
白衣影子
2013-11-16 · 超过18用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:31.3万
展开全部
-----------来自华夏联盟-----------
那是指针越界
还有问题可以继续问我
追问
谢谢啊  可以具体点吗?不知道怎么改
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式