C语言矩阵旋转90度:输入阶数,按行序赋值,输出旋转矩阵

题目描述

输入矩阵的阶数n,按行序由1到n^2顺序赋值,然后将其向右旋转90度,输出旋转后的矩阵。

输入形式

控制台输入阶数n。

输出形式

输出旋转90度后的矩阵,其中每个数字占4位字符的宽度,向右对齐。

输入样例

4

输出样例

13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4

算法1

(暴力枚举) $O(n^2)$

1.输入阶数n

2.定义二维数组a[n][n],定义变量k=1,按行序从1到n^2对a[i][j]赋值

3.将a中的元素旋转90度,即以主对角线为轴交换行和列

时间复杂度

每个元素只赋值一次,时间复杂度为$O(n^2)$

参考文献

C++ 代码

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int a[n][n];
    int k = 1;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            a[i][j] = k++;
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            swap(a[i][j], a[j][i]);
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n / 2; j++) {
            swap(a[i][j], a[i][n - 1 - j]);
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            printf("%4d", a[i][j]);
        }
        cout << endl;
    }
    return 0;
}

算法2

(暴力枚举) $O(n^2)$

blablabla

时间复杂度

参考文献

C++ 代码

C语言矩阵旋转90度:输入阶数,按行序赋值,输出旋转矩阵

原文地址: https://www.cveoy.top/t/topic/nYVq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录