C语言矩阵旋转90度:输入阶数,按行序赋值,输出旋转矩阵
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++ 代码
原文地址: https://www.cveoy.top/t/topic/nYVq 著作权归作者所有。请勿转载和采集!