怎样实现矩阵的转置和乘法?解决办法
怎样实现矩阵的转置和乘法???
用C 语言实现矩阵的转置运算和矩阵的乘法运算,。
------解决方案--------------------
用二维数组,这应该是二维数组应用的基本问题,那些基础教材上面应该有相应的练习题,楼主可以去找找答案哦,当然,直接百度可能会更快,呵呵~
------解决方案--------------------
我就写一个矩阵乘法吧,另一个LZ自己想啦,都是很简单的
用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多源代码。。。。
------解决方案--------------------
要看你用什么存储结构存储的,就有不同的算法
------解决方案--------------------
矩阵转置有个所谓的巧办法,
就是,给矩阵中的每个元素赋上(行,列)信息,
则原矩阵是按先行再列的顺序排序;
而转置矩阵是按先列再行的顺序排序