- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STRASSEN矩阵乘法算法及改进算法
以下程序可以在直接运行
//2的k阶矩阵
#includeiostream
#includemath.h
//#includestdlib
using namespace std;
#define Max_Num 11
void Strassen(int **A,int **B,int **C,int n);
int main()
{
int **A, **B,**C,n,i,j;
cout请输入矩阵的阶数:endl;
cinn;
A=new int *[n];
B=new int *[n];
C=new int *[n];
for(i=0;in;i++)
{
A[i]=new int[n];
B[i]=new int[n];
C[i]=new int[n];
}
cout请输入矩阵A:endl;
for(i=0; in;i++)
for( j=0;jn;j++)
cinA[i][j];
cout请输入矩阵B:endl;
for(i=0; in;i++)
for( j=0;jn;j++)
cinB[i][j];
Strassen( A,B, C,n);
/*coutC C*C **Cendl;
for( i=0; in;i++)
coutC[i] ;
coutendl;*/
coutC=A*B:endl;
for( i=0; in;i++)
{
for( j=0;jn;j++)
coutC[i][j] ;
coutendl;
}
system(pause);
return 0;
}
void Matrix_Sub(int **A,int **B,int **C,int n)
{
int i,j;
for(i=0;in;i++)
for(j=0;jn;j++)
C[i][j]=A[i][j]-B[i][j];
}
void Matrix_Add(int **A,int **B,int **C,int n)
{
int i,j;
for(i=0;in;i++)
for(j=0;jn;j++)
C[i][j]=A[i][j]+B[i][j];
}
void Matrix_Mul(int **A,int **B,int **C)
{
int i,j,k;
for(i=0;i2;i++)
for(j=0;j2;j++)
{
C[i][j]=0;
for(k=0;k2;k++)
C[i][j]+=A[i][k]*B[k][j];
}
}
void Strassen(int **A,int **B,int **C,int n)
{ int **A11, **A12, **A21, **A22,**B11,**B12,**B21,**B22,**C11,**C12,**C21,**C22;
int **M1,**M2,**M3,**M4,**M5,**M6,**M7;
int i,j,**T1,**T2;
A11=new int* [n];A12=new int* [n];A21=new int* [n];A22=new int* [n];
B11=new int* [n];B12=new int* [n];B21=new int* [n];B22=new int* [n];
C11=new int* [n];C12=new int* [n];C22=new int* [n];C21=new int* [n];
M1=new int* [n];M2=new int* [n];M3=new int* [n];M4=new int* [n];M5=new int* [n];M6=new int* [n];M7=new int* [n];
T1=new int* [n];T2=new int* [n];
for(i=0;in;i++
文档评论(0)