矩阵旋转
#include <iostream> int a[1001][1001]; using namespace std; int main() { int m,n; cin>>n>>m; for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>a[i][j]; printf("顺时针90度后:\n"); for(j=0;j<m;j++) { for(i=n-1;i>=0;i--) printf("%d\t",a[i][j]); printf("\n"); } printf("逆时针90度后:\n"); for(j=m-1;j>=0;j--) { for(i=0;i<n;i++) printf("%d\t",a[i][j]); printf("\n"); } printf("旋转180度后:\n"); for(i=n-1;i>=0;i--) { for(j=m-1;j>=0;j--) printf("%d\t",a[i][j]); printf("\n"); } return 0; }
A:顺时针旋转90度;
B:逆时针旋转90度;
C:左右翻转;
D:上下翻转。
#include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<queue> #include<vector> #include<algorithm> using namespace std; int n, m; int c[1001][1001]; int b[1001][1001]; char ans[101]; void f(char a) { if(a == 'A') { for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { b[j][n - i + 1] = c[i][j]; } } } if(a == 'B') { for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { b[m - j + 1][i] = c[i][j]; } } } if(a == 'C') { for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { b[i][m - j + 1] = c[i][j]; } } } if(a == 'D') { for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { b[n - i + 1][j] = c[i][j]; } } } memcpy(c, b, sizeof(c)); if(a == 'A' || a == 'B')swap(m, n); } int main() { cin >> n >> m; for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { cin >> c[i][j]; } } scanf("%s", &ans); for(int i = 0; i < strlen(ans); i++) { f(ans[i]); } for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { cout << c[i][j] << " "; } cout << endl; } return 0; }
顺时针、逆时针、中心变换: https://www.cnblogs.com/fangzheng-nie/p/9980225.html