我该如何为C ++中的n * n矩阵乘法编写一个简单的Strassen算法?

问题描述 投票:0回答:1

我有任务,我真的需要您的帮助!我们现在正在研究recurring functionsdivide and conquer,我必须使用C ++中的Strassen算法编写n * n矩阵乘法]的代码。我在Internet上进行了搜索,代码太复杂了,我需要一些非常简单的东西,因为我是一个初学者(仅在可能的情况下使用iostream)。我完全不知道如何开始,我真的需要代码才能完美运行。我的代码适用于2 * 2矩阵乘法,但我需要将其用于任何值。拜托,我真的需要您的帮助!

#include <iostream>
using namespace std;
int main()
{
    int a[100][100],b[100][100],c[100][100];
    int m1,m2,m3,m4,m5,m6,m7;
    for(int i=0;i<2;i++)
        for(int j=0;j<2;j++)
            cin>>a[i][j];

    for(int i=0;i<2;i++)
        for(int j=0;j<2;j++)
            cin>>b[i][j];

    m1= (a[0][0] + a[1][1])*(b[0][0]+b[1][1]);
    m2= (a[1][0]+a[1][1])*b[0][0];
    m3= a[0][0]*(b[0][1]-b[1][1]);
    m4= a[1][1]*(b[1][0]-b[0][0]);
    m5= (a[0][0]+a[0][1])*b[1][1];
    m6= (a[1][0]-a[0][0])*(b[0][0]+b[0][1]);
    m7= (a[0][1]-a[1][1])*(b[1][0]+b[1][1]);

    c[0][0]=m1+m4-m5+m7;
    c[0][1]=m3+m5;
    c[1][0]=m2+m4;
    c[1][1]=m1-m2+m3+m6;

    for(int i=0;i<2;i++)
    {
        cout<<endl;
        for(int j=0;j<2;j++)
            cout<<c[i][j]<<" ";
    }

    return 0;
}

我有任务,我真的需要您的帮助!我们正在研究递归函数并立即进行分治,我必须使用Strassen's ...

c++ matrix matrix-multiplication multiplication strassen
1个回答
0
投票

我可以帮助您。你很幸运!我们可以在Skype上讨论此问题。我的Skype ID是live:.cid.8eda124a4bc4d747。请与我联系。我在等你。

© www.soinside.com 2019 - 2024. All rights reserved.