#29567: cpp 複製矩陣做法


tommy123234345456567@gmail.com (星雨)

學校 : 國立內壢高級中學
編號 : 111941
來源 : [116.241.253.53]
最後登入時間 :
2023-01-26 21:21:44
b266. 矩陣翻轉 -- 2016 APCS 實作題第二題 | From: [110.26.156.95] | 發表日期 : 2022-03-12 16:32

簡單來說,要還原本來的矩陣,就是從後面的指令開始做,順90度變成逆90度,翻轉還是翻轉

把每一次變化後的矩陣記錄下來,接者以此矩陣去做旋轉或翻轉就好,注意旋轉後行列數量互換(r,c)=>(c,r)

底下是程式碼

#include <iostream>

#include <algorithm>

using namespace std;

 

int main()

{

    int r,c,m;

    cin >> r >> c >> m;

    int martix[2][11][11];

    for(int i=1;i<=r;i++) for(int j=1;j<=c;j++) cin >> martix[0][i][j];

    int commnd[m];

    int n=0;

    for(int i=1;i<=m;i++) cin >> commnd[i];

    for(int k=m;k>0;k--)

    {

        n=1-n;

        if(commnd[k]==0)

        {

            for(int i=1;i<=r;i++)

                for(int j=1;j<=c;j++)

                   martix[n][c-j+1][i]=martix[1-n][i][j];

            swap(r,c);

        }

        else

        {

            for(int i=1;i<=r;i++)

                for(int j=1;j<=c;j++)

                   martix[n][r-i+1][j]=martix[1-n][i][j];

        }

    }

    cout << r << " " << c << '\n';

    for(int i=1;i<=r;i++)

    {

        for(int j=1;j<=c;j++)

            cout << martix[n][i][j] << ' ';

        cout << '\n';

    }

    return 0;

}

 
ZeroJudge Forum