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
#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;
}

【以下回答由 GPT 生成】

def matrix_flip(n, t, matrix):
    # 定义一个二维数组来保存翻转后的矩阵
    flipped_matrix = [[0] * n for _ in range(n)]

    if t == 1:
        # 主对角线翻转:将原矩阵的行和列对应位置的元素交换
        for i in range(n):
            for j in range(n):
                flipped_matrix[j][i] = matrix[i][j]
    elif t == 2:
        # 副对角线翻转:将原矩阵的行列倒序输出
        for i in range(n):
            for j in range(n):
                flipped_matrix[i][j] = matrix[n-1-i][n-1-j]
    else:
        print("无效的翻转类型")
        return None

    return flipped_matrix

使用示例:

n = int(input())
t, = map(int, input().split())
matrix = []
for _ in range(n):
    row = list(map(int, input().split()))
    matrix.append(row)
flipped_matrix = matrix_flip(n, t, matrix)
for row in flipped_matrix:
    print(" ".join(map(str, row)))

这个程序定义了一个 matrix_flip 函数,它接受矩阵的大小 n、对角线翻转类型 t(1表示主对角线翻转,2表示副对角线翻转),以及原始矩阵 matrix。函数返回翻转后的矩阵。

首先,我们创建一个空的二维数组 flipped_matrix 来保存翻转后的矩阵。

然后,根据翻转类型 t,使用嵌套循环遍历原矩阵 matrix。如果 t 是1,就将原矩阵的行和列对应位置的元素交换,即将 matrix[i][j] 放到 flipped_matrix[j][i];如果 t 是2,就将原矩阵的行列倒序输出,即将 matrix[i][j] 放到 flipped_matrix[n-1-i][n-1-j]

最后,返回翻转后的 flipped_matrix

使用示例中,我们可以输入示例输入,并将翻转后的矩阵输出到标准输出。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^