| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1097 人关注过本帖
标题:矩阵连乘--单步跟踪发现问题
只看楼主 加入收藏
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
 问题点数:0 回复次数:4 
矩阵连乘--单步跟踪发现问题
单步跟踪发现p[3]=0
不知道怎么回事,望高手指点啊
我的程序:
#include<iostream.h>
#define N 6
void MatrixChain(int *p,int n,int m[N][N],int s[N][N]);
//int Traceback(int i,int j,int s[N][N]);
int main()
{
 int p[]={30,35,15,5,10,20,25};
// for(int k=0;k<7;k++)
//  cout<<p[k]<<"  ";
 int n=6,i=0,j=0;
 int m[6][6];
 int s[6][6];
 MatrixChain(p,n,m,s);
 for(i=1;i<=N;i++)
 {
  for(j=1;j<=N;j++)
  {
   if(i<=j)
    cout<<m[i][j]<<"  ";
  }
  cout<<endl;
 }
 cout<<endl;
// int i=1,j=6;
// Traceback(i,j,s);
 return 0;
}
void MatrixChain(int *p,int n,int m[N][N],int s[N][N])
{
 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++)
  {
   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[k+1][j]+p[i-1]*p[k]*p[j];
    if(t<m[i][j])
    {
     m[i][j]=t;
     s[i][j]=k;
    }
   }
  }
 }
/* for(i=1;i<=N;i++)
 {
  for(int j=1;j<=N;j++)
  {
   if(i<=j)
    cout<<m[i][j]<<"  ";
  }
  cout<<endl;
 }*/
}
/*int Traceback(int i,int j,int s[N][N])
{
 if(i==j)return -1;//cout<<"no-op"<<endl;
 Traceback(i,s[i][j],s);
 Traceback(s[i][i]+1,j,s);
 cout<<"Multiply A"<<i<<","<<s[i][j];
 cout<<"and A"<<(s[i][j]+1)<<","<<j<<endl;
 return 0;
}*/
搜索更多相关主题的帖子: int 单步 矩阵 cout 跟踪 
2007-11-30 22:08
duccdd
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-10-25
收藏
得分:0 
数组下标是从0开始的,到n-1结束,你里面很多数组越界
2007-11-30 23:49
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
得分:0 
回复 2# 的帖子
我想从1到n赋值啊
因为MatrixChain函数的第六行有p[i-1]
从0开始也会越界啊 所以就想了这个方法

上善若水,水善利万物而不争,处众人之所恶
2007-12-01 09:42
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:0 
想从1到n赋值就把数组大小改成n+1而不是n

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2007-12-01 16:10
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
得分:0 
我试过啊
用n也可以啊
我用vc++ 6.0

上善若水,水善利万物而不争,处众人之所恶
2007-12-02 22:53
快速回复:矩阵连乘--单步跟踪发现问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028584 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved