mcbbnb 2023-08-12 18:11 采纳率: 85.7%
浏览 3
已结题

c++翻天覆地问题!

翻天覆地

描述

n 行 n 列矩阵中,从左上角到右下角的对角线被称为主对角线,从左下角到右上角的对角线被称为副对角线。

给定一个 n 行 n 列的整数矩阵 A,请输出 A 关于主对角线或副对角线翻转后的矩阵

输入描述

第一行两个整数 n,t,表示矩阵的大小和关于哪条对角线翻转。t=1 表示关于主对角线翻转,t=2 表示关于副对角线翻转

接下来 n 行,每行 n 个整数,表示矩阵 A 的中的元素

输出描述

输出 n 行,每行 n 个整数,表示翻转后的矩阵

用例输入 1 

3 1
1 2 3
4 5 6
7 8 9
用例输出 1 

1 4 7
2 5 8
3 6 9
用例输入 2 

3 2
1 2 3
4 5 6
7 8 9
用例输出 2 

9 6 3
8 5 2
7 4 1
  • 写回答

2条回答 默认 最新

  • threenewbee 2023-08-12 18:16
    关注
    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main() 
    {
        int n, t;
        cin >> n >> t;
        int A[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                cin >> A[i][j];
            }
        }
    
        if (t == 1) {
            for (int i = 0; i < n; i++) {
                for (int j = i + 1; j < n; j++) {
                    swap(A[i][j], A[j][i]);
                }
            }
        } else if (t == 2) {
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n - i - 1; j++) {
                    swap(A[i][j], A[n - j - 1][n - i - 1]);
                }
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                cout << A[i][j] << ' ';
            }
            cout << endl;
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月20日
  • 已采纳回答 8月12日
  • 创建了问题 8月12日