最大子数组之和(二维矩形)

一、实验目的

1,以指定格式的文本文件形式输入数组。

2,数组由一维变为二维。

3,熟练使用git常用命令将作业签入代码版本控制平台。

4,给出单元测试/代码覆盖率的最终覆盖率的报告,撰写博客。

 

二、代码实现

"""本程序采用暴力破解的方法,将数据转换为二维数组后得出行数和列数,外层四个for循环规定矩形大小,内层两个for循环将矩形内的数据相加,最后将其存储到新数组中得到其最大值。
基本思想就是不断给出定固定矩形框然后往二维数组中挨个套,得到所以可能性,从而求出最大值"""
import numpy as np
# 读取并转换为二维数组
data = np.loadtxt(r"C:\Users\32762\Desktop\list.txt")
# 二维数组行数
line = data.shape[0]
# 二维数组列数
column = data.shape[1]
# 定义一个列表存储矩形数据和
lst = []

for i in range(0, column):  # 矩形框起始列
    for m in range(i, column):   # 矩形框终止列
        for j in range(0, line):        # 矩形框起始行
            for n in range(j, line):    # 矩形框终止行
                t = 0           # 每次将t置为0,防止干扰
                for q in range(j, n + 1):   # 加一是由于range()包头不包尾,不能包含最后一行终止行
                    for o in range(i, m+1):
                        if o <= column and q <= line:   # 判断语句是防止越界
                            t = data[q][o] + t
                        else:
                            continue
                lst.append(t)
print(lst)
print(max(lst))

3、运行结果

 数组中数据就是所有可能的矩形的和,25.0是其中的最大值

 

4、单元测试

 

 

测试数据入下

 

 

 

5、覆盖率

 

 绿色部分表示已覆盖

6、简单性能分析

 

 

 

 

 7、实验总结

  1.代码覆盖率还行,函数中并无太多冗余。

  2.通过简单的性能分析,了解到多重嵌套循环虽然想清楚后容易实现但是复杂度过高

  3.通过这次实践,更熟练运用了pycharm中的各种分析工具

posted on 2021-04-01 14:23  01xx10  阅读(76)  评论(1)    收藏  举报