【矩阵】重塑矩阵

每日一道算法题之重塑矩阵

  • 一、题目描述
  • 二、思路
  • 三、C++代码

一、题目描述

题目来源:LeetCode

在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(p x
q)的新矩阵,但保留其原始数据。

给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 p和q ,分别表示想要的重构的矩阵的行数和列数。

重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。

如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。

C++程序要求输入输出格式如下:(和原题目的输入输出要求略有不同

输入:
第一行输入m,n,表示原始矩阵的行数和列数。
第二行到第m+1行输入原始矩阵的各数据。
第m+2行输入p,q,表示重塑的矩阵的行数和列数。
输出:
重塑后的矩阵

示例如下:

输入:3 4
      1 2 3 4
      5 6 7 8
      9 10 11 12
      2 6
输出:1 2 3 4 5 6
     7 8 9 10 11 12

二、思路

  for循环接收输入的原始矩阵数据,输出时注意按按照新矩阵的列数来换行输出。

三、C++代码

#include
using namespace std;

//重塑矩阵 


int main(){
	
	 int m,n;
	 cin>>m>>n;
	 int a[m][n];
	 
	  for(int i=0;i<m;i++){
			for(int j=0;j<n;j++){
				cin>>a[i][j];
			}
	 }
	 
	 int p,q;
	 
	 cin>>q>>q;
	
	 
	 int number=0;
	 for(int i=0;i<m;i++){
			for(int j=0;j<n;j++){
				number++;
				cout<<a[i][j]<<" ";
				if(number%q==0){
					cout<<endl;
				}
			}
	 }
	 
	 
}

你可能感兴趣的:(算法,矩阵,线性代数,算法,c++)