增量矩阵与其转置矩阵的乘积_baidu_20160913-3

来源:互联网 发布:数据采集卡选型 编辑:程序博客网 时间:2024/06/05 04:28

最近在校招海投,记录一下我的笔试和面试程序题。以下为 2016/09/13 baidu 提前批笔试 的第三道程序题。

题目描述
增量矩阵是一个元素为初始值initialValue的递增值的矩阵。
例如,如果初始值initialValue=1,且维度为rows=3 和 columns =3,则增量矩阵为:
1 2 3
4 5 6
7 8 9
写一个算法,将原始增量矩阵与其转置阵相乘。

输入:
函数/方法的输入包括三个参数:一个表示初始值的正整数 initialValue,表示增量矩阵中行数的正整数,和表示增量矩阵中列树的正整数。
输出:
返回由增量矩阵和其转置矩阵相乘得到的一个二维矩阵

示例
// 输入:
initialValue =1 rows = 3 columns = 3
// 输出:
14 32 50
32 77 122
20 122 194

* 解释 *
对于 for initialValue =1 rows = 3 columns = 3的情况,增量矩阵为
1 2 3
4 5 6
7 8 9
其转置矩阵为
1 4 7
2 5 8
3 6 9
因此,将由此产生的乘积矩阵为
14 32 50
32 77 122
20 122 194

case1: 3 4 2
25 39 53 67
39 61 83 105
53 83 113 143
67 105 143 181
case2: 4 3 2
41 59 77
59 85 111
77 111 145

[核心函数]这里写图片描述(http://img.blog.csdn.net/20160923223814389)

完整源码:

#include<iostream>using namespace std;int ** transposeMultMatrix(int initialValue, int rows, int columns);int main(){     int initialValue, rows, columns;     int** arr;     cout<<"请输入增量矩阵的 初始值,行数,列数:"<<endl;     while(cin >> initialValue >> rows >> columns)     {         arr = transposeMultMatrix(initialValue, rows, columns);         for(int i = 0; i < rows; ++i)         {             for(int j = 0; j < rows; ++j)             cout<<arr[i][j]<<"\t";             cout<<endl;         }     }     return 0;}int ** transposeMultMatrix(int initialValue, int rows, int columns){     int iV = initialValue;     int** arr = new int*[rows];     for(int i = 0; i<rows; ++i)            arr[i] = new int[rows];     for(int i = 0; i < rows; ++i)         for(int k = 0; k < rows; ++k)         {             int value = 0;             for(int j = 0; j < columns; ++j)                   value += (iV + i * columns + j) * (iV + k * columns + j);             arr[i][k] = value;             }     return arr;}
0 0