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