将矩阵逆时针旋转45°后输出

【问题描述】
将矩阵逆时针旋转45°后输出。

【算法代码】

#include <iostream>
using namespace std;

const int maxn=110;
int matrix[maxn][maxn];

int main() {
    int n;
    while(cin>>n) {
        for(int i=0; i<=n-1; i++)
            for(int j=0; j<=n-1; j++)
                cin>>matrix[i][j];

        cout<<"The original matrix is as follows:"<<endl;
        for(int i=0; i<=n-1; i++) {
            for(int j=0; j<=n-1; j++) {
                cout<<matrix[i][j]<<" ";
            }
            cout<<endl;
        }

        cout<<"The matrix after 45° CCW rotation is:"<<endl;
        for(int i=n-1; i>=0; i--) {
            for(int j=0; j<=n-1; j++) {
                if(i+j<=n-1) {
                    cout<<matrix[j][i+j]<<" ";
                }
            }
            cout<<endl;
        }

        for(int i=1; i<=n-1; i++) {
            for(int j=0; j<=n-1; j++) {
                if(i+j<=n-1) {
                    cout<<matrix[i+j][j]<< " ";
                }
            }
            cout<<endl;
        }
    }

    return 0;
}


/*
in:
3
1 2 3
4 5 6
7 8 9

out:
3
2 6
1 5 9
4 8
7
*/



【参考文献】
https://www.cnblogs.com/radical/p/3985167.html
 

要将一个矩阵逆时针旋转90度,可以按照以下步骤操作: ### 步骤详解 假设我们有一个 n x m 的矩阵 `matrix`,我们可以按以下步骤将其逆时针旋转90度: 1. **转置矩阵**:先将原矩阵进行转置操作,即将第 i 行变为第 i 列。这一步使得每一行变成了列。 假设原始矩阵为: ``` 1 2 3 4 5 6 7 8 9 ``` 转置后的结果为: ``` 1 4 7 2 5 8 3 6 9 ``` 2. **水平翻转每行**:对转置后的矩阵中的每一行元素顺序颠倒。 继续上面的例子,水平翻转后的结果为: ``` 7 4 1 8 5 2 9 6 3 ``` 最终得到的就是原来的矩阵经过逆时针旋转90度的结果。 ### 实现示例 (Python) ```python def rotate_matrix_anticlockwise(matrix): # 先获取矩阵大小 rows = len(matrix) cols = len(matrix[0]) # 创建一个新的矩阵用于存储结果 rotated_matrix = [[0] * rows for _ in range(cols)] # 进行转换操作 for r in range(rows): for c in range(cols): rotated_matrix[c][rows - 1 - r] = matrix[r][c] return rotated_matrix # 示例测试 original_matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] rotated_result = rotate_matrix_anticlockwise(original_matrix) for row in rotated_result: print(row) ``` 上述代码会输出: ``` [3, 6, 9] [2, 5, 8] [1, 4, 7] ``` 这是给定输入矩阵 `[1, 2, 3], [4, 5, 6], [7, 8, 9]` 逆时针旋转90度之后的新排列形式。 #### 注意事项 - 如果需要处理非方阵的情况,在创建新的目标数组时需要注意行列数的变化; - 对于较大的数据集来说,直接构建新矩阵可能是更安全的选择;如果追求空间效率,则可以在原地修改(即不额外申请内存),但编写起来相对复杂一些。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值