1 矩阵转置
问题描述:
将一个N*N矩阵的行列互换
· 要求实现函数
void MatrixTranspose (const char *InArr, unsigned int n, const char *OutArray)
【输入】InArr: 输入的字符矩阵
n: N*N矩阵的行数
【输出】OutArray: 转置后的字符矩阵
【返回】 无
注:输入输出的矩阵都是以一维形式保存的二维数组,
比如输入为{‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’},
实际上表示如下3*3的矩阵
‘1’,’2’,’3’,
‘4’,’5’,’6’,
‘7’,’8’,’9’
· 示例
输入InArr = {‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’},n=3
输出OutArray = {‘1’,’4’,’7’,’2’,’5’,’8’,’3’,’6’,’9’}
#include <iostream>
using namespace std;
void MatrixTranspose(const char *InArray,int n, char* OutArray)
{
int i,j;
int k=0;
for(i=0;i<n;i++)
{
for(j=i;j<n*n;j+=n)
OutArray[k++]=InArray[j];
}
}
void main()
{
const char InArray[]={'1','2','3','4','5','6','7','8','9'};
unsigned int n=9;
char OutArray[9]="0";
MatrixTranspose(InArray,3,OutArray);
for(int i=0;i<9;i++)
cout<<OutArray[i];
cout<<endl;
}
注意点:
1 定义的若为常量的const char OutArray[],是不能被写入的
2 矩阵的转置函数:输出数组的下标操作不受循环影响的自加操作,对于赋值操作,两次循环,即可实现