二维数组矩阵运算pta
时间: 2024-12-25 14:20:57 浏览: 6
### 关于二维数组矩阵运算的PTA练习题及解法
#### 幻方构建算法实现
幻方是一种特殊的 \(N \times N\) 矩阵,其特性是由连续整数 \(1, 2, ..., N^2\) 构成,并满足每行、每列以及两条对角线上元素之和相等。对于奇数阶幻方,可以采用特定的方法来填充这些数值[^1]。
```python
def fill_magic_square(n):
magic_square = [[0 for _ in range(n)] for _ in range(n)]
num = 1
i, j = n // 2, n - 1
while num <= (n * n):
if i == -1 and j == n:
j = n - 2
i = 0
else:
if j == n:
j = 0
if i < 0:
i = n - 1
if magic_square[i][j]:
j -= 2
i += 1
continue
magic_square[i][j] = num
num += 1
i -= 1
j += 1
return magic_square
def print_magic_square(square_matrix):
for row in square_matrix:
print(' '.join(f'{num:4d}' for num in row))
```
此代码实现了基于给定规则创建一个奇数维度的幻方,并打印出来。
#### 向量加法函数设计
针对平面向量加法问题,可以通过简单的循环结构完成两个向量对应位置元素求和的操作。考虑到特殊情况下浮点数表示形式的要求,在最终输出前需做适当处理[^2]。
```python
import math
def add_vectors(v1, v2):
result_x = round((v1[0]+v2[0]), 1)
result_y = round((v1[1]+v2[1]), 1)
# Avoid displaying "-0.0"
if abs(result_x) < 1e-9:
result_x = 0.0
if abs(result_y) < 1e-9:
result_y = 0.0
return f"{result_x:.1f} {result_y:.1f}"
vector_1 = (-7.8, 3.5)
vector_2 = (4.6, -2.1)
print(add_vectors(vector_1, vector_2)) # Output should be similar to " -3.2 1.4"
```
上述代码片段展示了如何接收一对二维向量作为参数并返回它们相加之后的结果字符串,其中包含了必要的精度控制逻辑以确保不会出现 `-0.0` 的情况。
阅读全文