矩阵旋转:
顺时针旋转,把矩阵上下转换,然后沿主对角线交换
逆时针旋转,把矩阵左右转换,然后沿主对角线交换


#include<iostream>
#include<vector>
using namespace std;
int a[6][6],o1,o2,x,y;
void swap(int &x,int &y){
    int temp=x;
    x=y;y=temp;
}
void updown(int x,int y,int len){//len代表矩阵的长和宽 
    for(int j=0;j<len;j++){
        for(int i=0;i<len/2;i++){
            swap(a[x+i][y+j],a[x+len-1-i][y+j]);
        }
    }

} 
void leftright(int x,int y,int len){
    for(int i=0;i<len;i++){
        for(int j=0;j<len/2;j++){
            swap(a[x+i][y+j],a[x+i][y+len-1-j]);
        }
    }
}
void rev(int x,int y,int len){
    for(int i=0;i<len;i++){
        for(int j=i+1;j<len;j++){
            swap(a[x+i][y+j],a[x+j][y+i]); 
        } 
    }
}
void print(){
    for(int i=1;i<6;i++){
        for(int j=1;j<6;j++){
            cout<<a[i][j]<<" ";
        }cout<<endl;
    }
}
int main(){
    while(cin>>a[1][1]){
        for(int i=1;i<6;i++){
            for(int j=1;j<6;j++){
                if(i==1&&j==1)continue;
                cin>>a[i][j];
            }
        }cin>>o1>>o2>>x>>y;
        if(o1==1&&o2==2){
            updown(x,y,2);
            rev(x,y,2);
        }else if(o1==1&&o2==3){
            updown(x,y,3);
            rev(x,y,3);
        }else if(o1==2&&o2==2){
            leftright(x,y,2);
            rev(x,y,2);
        }else{
            leftright(x,y,3);
            rev(x,y,3);
        }
        print();
    }
    return 0;
}