每日一道算法题之重塑矩阵
- 一、题目描述
- 二、思路
- 三、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 41 2 3 45 6 7 89 10 11 122 6
输出:1 2 3 4 5 67 8 9 10 11 12
二、思路
for循环接收输入的原始矩阵数据,输出时注意按按照新矩阵的列数来换行输出。
三、C++代码
#include<bits/stdc++.h>
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;}}}}