矩阵旋转:
顺时针旋转,把矩阵上下转换,然后沿主对角线交换
逆时针旋转,把矩阵左右转换,然后沿主对角线交换
#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;
} 


京公网安备 11010502036488号