站外求调
  • 板块学术版
  • 楼主Ice_rnfmabj
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/6/15 09:34
  • 上次更新2024/6/15 10:04:43
查看原帖
站外求调
695943
Ice_rnfmabj楼主2024/6/15 09:34

小火龙有一个 n×m 的矩阵,他对矩阵进行了一系列变换操作,矩阵变换操作可以分为以下两类:

    1. 将矩阵的第x 行所有元素循环左移一位,最左边的元素则移到最右边的位置;

    2. 将矩阵的第y 列所有元素循环上移一位,最上面的元素则移到最下面的位置。

现在已知小火龙进行 t 次变换操作后的矩阵和每次执行的操作,请你帮助小火龙找回原矩阵。

#include <bits/stdc++.h>
using namespace std;
int n,m,a[101][101],t,zl[2][150];
int main(){
    cin>>n>>m>>t;
    for(int i=1;i<=t;++i){
        cin>>zl[0][i]>>zl[1][i];
    }
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            cin>>a[i][j];
        }
    }
    for(int i=t;i>=1;i--){
        if(zl[0][i]==1){//将第zl[1][i]行向右移
            for(int k=1;k<=2;++k){
                int cmp=a[zl[1][i]][1];
                for(int j=1;j<m;++j){
                    a[zl[1][i]][j]=a[zl[1][i]][j+1];
                }
                a[zl[1][i]][m]=cmp;
            }
        }
        else{//将第zl[1][i]行向下移
            for(int k=1;k<=2;++k){
                int cmp=a[1][zl[1][i]];
                for(int j=1;j<n;++j){
                    a[j][zl[1][i]]=a[j+1][zl[1][i]];
                }
                a[n][zl[1][i]]=cmp;
            }
            
        }
    }
    
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            cout<<a[i][j]<<" ";
        }
        puts("");
    }
    return 0;
}

10pts

2024/6/15 09:34
加载中...