首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【每日一贴】求优化下列二维矩阵乘法,该如何处理

2012-06-14 
【每日一贴】求优化下列二维矩阵乘法C/C++ code//矩阵的乘法#include iostream#include cstdlib#include

【每日一贴】求优化下列二维矩阵乘法

C/C++ code
//矩阵的乘法#include <iostream>#include <cstdlib>#include <ctime>using namespace std;struct coord{    int i;    int j;};int matrix_multi(int matrix1[4][5],struct coord c1,int matrix2[5][6],struct coord c2);int main(int argc,char* argv[]){    int matrix[4][5];    int matrix1[5][6];    int matrix_sum[4][6];    srand(time(0));    cout << "The First Matrix:" << endl;    for(int i=0;i<4;i++){        for(int j=0;j<5;j++){            matrix[i][j] = 10*rand()/RAND_MAX;            cout << matrix[i][j] << "\t";            cout.flush();        }        cout << endl;    }    cout << endl;    cout << "The Second Matrix:" << endl;    for(int i=0;i<5;i++){        for(int j=0;j<6;j++){            matrix1[i][j] = 10*rand()/RAND_MAX;            cout << matrix1[i][j] << "\t";            cout.flush();        }        cout << endl;    }    struct coord c1;c1.i=4;c1.j=5;    struct coord c2;c2.i=5;c2.j=6;    matrix_multi(matrix,c1,matrix1,c2);    return 0;}int matrix_multi(int matrix1[4][5],struct coord c1,int matrix2[5][6],struct coord c2){    if(c1.j != c2.i){        cout << "您输入的矩阵不符合规则,请输入合法的矩阵进行运算!" << endl;        return -1;    }else{        cout << "After Multiply:" << endl;        int sum = 0;        for(int i=0;i<c1.i;i++){            for(int j=0;j<c2.j;j++){                for(int k=0;k<c1.j;k++){                  sum +=  matrix1[i][k]*matrix2[k][j];                }                cout << sum << "\t";                cout.flush();                sum = 0;            }            cout << endl;        }        return 0;    }}

让上边二维矩阵乘法高效低存储占用。
1、矩阵必须随机赋值,行列值可自定,但是以减少行列数为优化目标,暂不算优化。(为便于大家学习,尽量采用4,5/5,6矩阵模式)。
2、尽量使用C++模式,可内联AT&T汇编。
3、打印格式不变。
4、编译以GNU工具为基准。

[解决办法]
除了struct coord 格式参数用指针传入
以及
matrix1[i][k] 二维数组用表达式直接算
可以优化的,c++语言层面已经没什么可优化的了吧

热点排行