解题思路:模拟题,详细构造思路看下面ac代码
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <queue>
#include <set>
#include <map>
#include <vector>
#define dbg(a) cout<<#a<<" : "<<a<<endl;
#define IOS std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
#define PAUSE system("pause")
#define sd(a) scanf("%d",&a)
#define sll(a) scanf("%intd",&a)
#define sdd(a,b) scanf("%d%d",&a,&b)
#define sddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define sf(a) scanf("%lf",&a)
#define sff(a,b) scanf("%lf%lf",&a,&b)
#define sfff(a,b,c) scanf("%lf%lf%lf",&a,&b,&c)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const ll maxn=1000+5;
ll n,m,maxx,k,cnt,ans,idx,cur,t;
int a[maxn][maxn];
int c[maxn][maxn];
//int b[maxn][maxn];
void sol1(int cnt1) //旋转
{
if(cnt1==0)
{
return;
}
else{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
a[i][j]=c[n-1-i][n-1-j];
//b[i][j]=a[i][j];
}
}
}
}
void sol2(int cnt2) //镜像
{
if(cnt2==0)
return;
else{
for(int i=0;i<n/2;i++)
{
for(int j=0;j<n;j++)
{
swap(a[i][j],a[n-1-i][j]);
}
}
}
}
int main()
{
sd(n);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
sd(a[i][j]);
c[i][j]=a[i][j];
// b[i][j]=a[i][j];
}
}
int q;
int cnt1=0;
int cnt2=0;
sd(q);
for(int i=0;i<q;i++)
{
sd(t);
if(t==1) cnt1++;
else cnt2++;
}
cnt1=cnt1%2;
cnt2=cnt2%2;
sol1(cnt1);
sol2(cnt2);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("%d ",a[i][j]);
}
puts("");
}
puts("");
//PAUSE;
return 0;
}