输入一个二维数组,可输出该数组的最小数下标以及主对角线之和和次对角线之和,以及每行列之和
时间: 2024-12-08 20:18:52 浏览: 5
当你有一个二维数组,你可以通过以下步骤找到最小元素的索引、计算主对角线和次对角线的和,以及每行和每列的总和:
1. **寻找最小值及其下标**:遍历整个数组,比较每个元素值,如果当前元素是最小的,则记录其位置(i, j)。初始化两个变量`min_val`和`min_index`用于存储最小值和对应的坐标。
```python
min_val = arr[0][0]
min_index = (0, 0)
for i in range(len(arr)):
for j in range(len(arr[i])):
if arr[i][j] < min_val:
min_val = arr[i][j]
min_index = (i, j)
```
2. **计算主对角线和次对角线和**:
- 主对角线:从左上到右下的对角线,即`arr[i][i]`的和。
- 次对角线:从左下到右上的对角线,即`arr[i][len(arr)-1-i]`的和(假设数组长度为偶数,对于奇数长度,只需将`len(arr)-1-i`调整为`len(arr)-i`)。
```python
main_diagonal_sum = sum(row[i] for i, row in enumerate(arr))
secondary_diagonal_sum = sum(arr[i][len(arr) - 1 - i] for i in range(len(arr)))
```
3. **计算每行和每列的和**:
- 使用列表推导式分别计算每行和每列的和,并存储在一个字典或列表中。
```python
row_sums = [sum(row) for row in arr]
column_sums = [sum(col) for col in zip(*arr)]
```
完整代码示例:
```python
def process_array(arr):
min_index = find_min(arr)
main_diagonal_sum = sum(arr[i][i] for i in range(len(arr)))
secondary_diagonal_sum = sum(arr[i][len(arr) - 1 - i] for i in range(len(arr)))
row_sums = [sum(row) for row in arr]
column_sums = [sum(col) for col in zip(*arr)]
return min_index, min_val, main_diagonal_sum, secondary_diagonal_sum, row_sums, column_sums
# 示例用法
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
result = process_array(arr)
print(f"最小值下标: {result[0]}, 主对角线和: {result[2]}, 次对角线和: {result[3]}")
print("每行和:", result[4])
print("每列和:", result[5])
阅读全文