簡單來說,要還原本來的矩陣,就是從後面的指令開始做,順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;
}