2015創發科技校園招聘筆試題——把矩陣順時針旋轉90度
阿新 • • 發佈:2019-02-10
第一種方法http://blog.csdn.net/friendan/article/details/8824682
第二種方法http://www.nowamagic.net/librarys/veda/detail/1044
#define n 4 //矩陣順時針旋轉90度 void Rotation(int a[n][n]) { int i; int k; int j; /*順時針旋轉90°的演算法*/ for(i=0;i<n/2;i++)/*共有n/2個旋轉環*/ for(k=0;k<n-1-i-i;k++)/*每個旋轉環共有n-1-i-i個旋轉組,每組4個元素,逐個旋轉*/ {/*旋轉組4個元素,分別是a[i][k+i]左上角,a[k+i][n-1-i]右上角,a[n-1-i][n-1-i-k]右下角,a[n-1-i-k][i]左下角*/ int t; t =a[i][k+i];//左上角 a[i][k+i]=a[n-1-i-k][i];//左下角的值賦給左上角 a[n-1-i-k][i]=a[n-1-i][n-1-i-k];//右下角賦給左上角 a[n-1-i][n-1-i-k]=a[k+i][n-1-i];//右上角賦給右下角 a[k+i][n-1-i]=t;//左上角賦給右上角 } /*輸出旋轉後的矩陣*/ printf("After rotating the array is:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%4d",a[i][j]); printf("\n"); } } void main(void) { int arr[n][n]={ {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; cout<<"矩陣順時針旋轉前\n"; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) printf("%3d ",arr[i][j]); cout<<endl; } Rotation(arr); cout<<"\n矩陣順時針旋轉90度後\n"; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) printf("%3d ",arr[i][j]); cout<<endl; } cin.get(); }