您的位置:首页 > 编程语言

2017校园招聘编程题——增量矩阵和其转置相乘

2016-11-09 16:52 316 查看

1. 题目

  增量矩阵是一个元素为初始值initialValue的递增值的矩阵。例如:如果初始值initialValue=1,且rows=3,columns=3,则增量矩阵为:

    1 2 3

    4 5 6

    7 8 9

  写一个算法,将原始增量矩阵与其转置相乘。

  输入:

  initialValue

  rows

  columns

  输出:

  相乘结果

2. 分析

   这个题主要考点不是数据结构,而是你对语言的掌握情况。怎样定义二维矩阵,怎样实现矩阵相乘等。具体见程序。

  二维矩阵定义详细内容请阅读这篇博文:

  http://blog.csdn.net/fx677588/article/details/52708813

3. C++实现

#include <iostream>
using namespace std;

int** GetMultiple(int initialValue , int rows, int columns)
{   /**** 数组定义 ****/
int **n2Arr = new int* [rows];        //定义二维数组
for(int i=0; i<rows; i++)
n2Arr[i] = new int[columns];
int **n2ArrTrans = new int* [columns];//转置数组定义
for(int i=0; i<columns; i++)
n2ArrTrans[i] = new int[rows];
/**** 数组赋值 ****/
for(int i=0;i<rows;i++)               //数组赋值
for(int j=0; j<columns; j++)
{
n2Arr[i][j] = initialValue++;
}
for(int i=0;i<rows;i++)               //转置数组赋值
for(int j=0; j<columns; j++)
{
n2ArrTrans[j][i] = n2Arr[i][j] ;
}
int **nMulRel = new int* [rows];    //定义保存相乘结果矩阵
for(int i=0; i<rows; i++)
{
nMulRel[i] = new int[rows];
}
/**** 两数组相乘 ****/
int nRel;
for(int i=0;i<rows;i++)
for(int j=0;j<rows;j++)
{
nRel = 0;
for(int k=0;k<columns;k++)
nRel += n2Arr[i][k] *n2ArrTrans[k][j];
nMulRel[i][j] = nRel ;
}
/**** 删除动态空间 ****/
for(int i=0;i<rows;i++)
delete[] n2Arr[i];
delete[] n2Arr;
for(int i=0;i<columns;i++)
delete[] n2ArrTrans[i];
delete[] n2ArrTrans;

return nMulRel;//因为动态分配内存,函数结束也未释放空间,所以可以传递指针过去
}

int main( )
{
int initialValue,rows,columns;
cin>>initialValue;
cin>>rows;
cin>>columns;
int **n2Arr = GetMultiple(initialValue , rows, columns);
for(int i=0;i<rows;i++)
{
for(int j=0;j<rows;j++)
{
cout<<n2Arr[i][j]<<'\t';
}
cout<<endl;
}
return 0;
}


个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!

转载请注明出处:CSDN 无鞋童鞋

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: