2011华为编程系列之矩阵转置

来源:互联网 发布:中华软件网 编辑:程序博客网 时间:2024/06/15 03:22


1 矩阵转置


问题描述:


将一个N*N矩阵的行列互换

· 要求实现函数

void MatrixTranspose (const char *InArr, unsigned int n, const char *OutArray)

【输入】InArr:  输入的字符矩阵

n:   N*N矩阵的行数

【输出】OutArray: 转置后的字符矩阵

【返回】 无

注:输入输出的矩阵都是以一维形式保存的二维数组,

比如输入为{123456789}

实际上表示如下3*3的矩阵

1,2,3,

4,5,6,

7,8,9

· 示例

输入InArr = {123456789}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(){    constchar 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 矩阵的转置函数:输出数组的下标操作不受循环影响的自加操作,对于赋值操作,两次循环,即可实现




原创粉丝点击