矩阵原地转置

矩阵的原地转置是指在不使用额外存储空间的情况下,直接将一个矩阵转置。对于一个 ( N \times N ) 的矩阵,原地转置意味着交换对角线元素以及对称位置的元素,空间复杂度为 ( O(1) )。

此题可参考第四章 矩阵与卷积算法中的矩阵转置

题目要求

  • 实现 transposeInPlace 函数,对一个 ( N \times N ) 的矩阵进行原地转置。

示例

假设输入矩阵为:

1 2 3
4 5 6
7 8 9

执行原地转置后,输出矩阵应为:

Transposed Matrix:
1 4 7
2 5 8
3 6 9

输入

  • 一个 ( N \times N ) 的矩阵,以字符串形式输入,矩阵中的元素由逗号分隔。

输出

  • 转置后的矩阵,每行元素由空格分隔。

代码介绍

  1. matrix_trans.c 文件包含 transposeInPlace 函数的框架,但当前尚未实现转置逻辑。

  2. main.c 文件包含主函数,用于解析命令行参数,调用 transposeInPlace 函数,并打印转置后的矩阵。

详细提示信息

  • transposeInPlace 函数实现

    • 需要交换矩阵对角线元素以及对称位置的元素。
    • 使用两个嵌套循环遍历矩阵,对于每个元素,如果其行索引和列索引之和不等于 ( N - 1 ),则与其对称元素交换。
  • main 函数解析

    • 检查命令行参数数量。
    • 使用 parseMatrix 函数解析输入的矩阵字符串。
    • 调用 transposeInPlace 函数执行原地转置。
    • 打印转置后的矩阵。
  • parseMatrix 函数

    • 解析输入的矩阵字符串,将字符串中的数值填充到矩阵中。
    • 注意处理字符串中的逗号和空格。

注意事项

  • 确保 transposeInPlace 函数正确实现原地转置逻辑,不使用额外存储空间。
  • 考虑矩阵的对称性质,避免重复交换元素。
  • 确保 parseMatrix 函数能够正确解析各种格式的输入字符串。
  • 参与者需要根据题目要求,完成 transposeInPlace 函数的实现,确保矩阵能够正确原地转置。同时,注意代码的健壮性和正确性。通过解析命令行参数和打印结果,展示原地转置的实际效果。