读书人

怎样实现矩阵的转置和乘法?解决办法

发布时间: 2012-04-11 17:42:33 作者: rapoo

怎样实现矩阵的转置和乘法???
用C 语言实现矩阵的转置运算和矩阵的乘法运算,。


[解决办法]
用二维数组,这应该是二维数组应用的基本问题,那些基础教材上面应该有相应的练习题,楼主可以去找找答案哦,当然,直接百度可能会更快,呵呵~
[解决办法]
我就写一个矩阵乘法吧,另一个LZ自己想啦,都是很简单的

C/C++ code
#include <iostream>using namespace std;int main(){    int m, n, o, p;    int sum, i, j, k;    sum = i = j = k = 0;    int first[100][100], second[100][100];    cout << "输入第一个矩阵的维数: ";    cin >> m >> n;    cout << "输入第二个矩阵的维数: ";    cin >> o >> p;    while(1)    {        if(n != o)        {            cout << "两个矩阵不匹配,不同相乘。\n请输入第二个矩阵的维数: ";            cin >> o >> p;        }        else            break;    }    cout << "请输入第一个矩阵: " << endl;    for(i=0;i<m;i++)        for(j=0;j<n;j++)            cin >> first[i][j];    cout << "请输入第二个矩阵: " << endl;    for(i=0;i<o;i++)        for(j=0;j<p;j++)            cin >> second[i][j];    cout << "第一个矩阵: " << endl;    for(i=0;i<m;i++)    {        for(j=0;j<n;j++)            cout << first[i][j] << "\t";        cout << endl;    }    cout << "第二个矩阵: " << endl;    for(i=0;i<o;i++)    {        for(j=0;j<p;j++)            cout << second[i][j] << "\t";        cout << endl;    }    cout << endl << "两个矩阵相乘的结果是:" << endl;    for(i=0;i<m;i++)    {        while(k < p)        {            for(j=0;j<o;j++)                sum = first[i][j] * second[j][k] + sum;            cout << sum << "\t";            k++;            sum = 0;        }        k = 0;        cout << endl;    }    return 0;}
[解决办法]
矩阵连乘是个经典的动态规划问题,普通的矩阵乘法Google一下可以找到n多源代码。。。。
[解决办法]
要看你用什么存储结构存储的,就有不同的算法
[解决办法]
矩阵转置有个所谓的巧办法,
就是,给矩阵中的每个元素赋上(行,列)信息,
则原矩阵是按先行再列的顺序排序;
而转置矩阵是按先列再行的顺序排序

读书人网 >软件架构设计

热点推荐