C++:旋转矩阵

打印旋转数组

原数组顺时针旋转90度

#include
using namespace std;

int a[105][105];
int b[105][105];

int main() {
    int n, m;
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            scanf("%d", &a[i][j]);
        }
    }

     for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            b[j][m-i+1] = a[i][j];
        }
    }


     for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            printf("%d ", b[i][j]);
        }
        printf("\n");
    }

    return 0;
}

原数组顺时针旋转180度

法一:直接转180°

#include
using namespace std;

int a[105][105];
int b[105][105];

int main() {
    int n, m;
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            scanf("%d", &a[i][j]);
        }
    }

     for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            b[n-i+1][m-j+1] = a[i][j];
        }
    }

     for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            printf("%d ", b[i][j]);
        }
        printf("\n");
    }

    return 0;
}

法二:转两次90°

#include
using namespace std;

int a[105][105];
int b[105][105];

int main() {
    int n, m;
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            scanf("%d", &a[i][j]);
        }
    }

    // 转2次90度
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            b[j][m-i+1] = a[i][j];
        }
    }

    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            a[j][m-i+1] = b[i][j];
        }
    }

     for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }

    return 0;
}

你可能感兴趣的:(C++,c++,矩阵,算法)