静态网站案例,宁波公司网站建设价格,软件开发流程工具,ppt中网站布局图怎么做要求#xff1a; 1#xff0c;输入一个二维整形数组#xff0c;数组里有正数也有负数。 2#xff0c;二维数组中连续的一个子矩阵组成一个子数组#xff0c;每个子数组都有一个和, 3#xff0c;求所有子数组的和的最大值。 设计思路#xff1a; 参照一维整数数组求解最大… 要求 1输入一个二维整形数组数组里有正数也有负数。 2二维数组中连续的一个子矩阵组成一个子数组每个子数组都有一个和, 3求所有子数组的和的最大值。 设计思路 参照一维整数数组求解最大子数组的方法我们想着将二维数组通过行不同列相加的方法转化为一维整数数组再求解最大子数组之和。 具体实现先求出每一行的最大子数组之和之后比较得出最大和MaxSum,然后通过上述方法求二行的最大子数组之和并与MaxSum比较用MaxSum存放较大值。以此类推求三行四行。。。 最后实现最大子数组的输出及其和的输出。 合作过程 两人合作探讨设计思路 一人负责分析程序编写代码 另一人负责代码复审和代码测试。 主要代码 //二维整数数组最大子数组之和#include iostream#include stdlib.h#include time.husing namespace std;int main(){int M,N;cout 输入二维数组的行数和列数 endl;cin M N;int data[M][N],line[N],sum 0,d1 0;int MaxSum ,Maxd1,end1[M][N] {0},end2[M][N] {0};int i_max 0,j_max 0;srand((unsigned int)time(0)); //保证生成不同的随机数cout 二维数组为 endl;for (int j 0;j M;j) //给二维数组的元素赋值并输出取值范围是-25到25{for (int k 0;k N;k){data[j][k] rand()%50 - 25;cout data[j][k] \t;}cout endl;}cout endl;MaxSum data[0][0]; //初值赋值为数组第一行第一个元素Maxd1 data[0][0];for (int i 0;i M;i){for (int i1 0;i1 M-i;i1)//当1行是循环M次{for (int j 0;j N;j)//赋初值{line[j] 0;}for (int i2 i1;i2 i1i;i2)//每次循环i次赋值{for (int j 0;j N;j){line[j] data[i2][j];}}sum 0;for (int k 0;k N;k){sum line[k];if (sum MaxSum){MaxSum sum;end1[i][i1] k;i_max i; //最大的时候是i行j_max i1;}if(sum 0){sum 0;}}for (int k N-1;k 0;k--){d1 line[k];if (d1 Maxd1){Maxd1 d1;end2[i][i1] k;}if(d1 0){d1 0;}}}}cout 最大子数组为 endl;for (int k 0;k i_max;k)//输出最大子数组元素{for (int k1 end2[i_max][j_max];k1 end1[i_max][j_max];k1){cout data[j_maxk][k1] \t;}cout endl;}cout endl;cout 最大子数组的和为 MaxSum endl;} 遇到的问题及解决方法 日期 编号 类型 引入阶段 排除阶段 修复时间 修复缺陷 10.20 1 循环函数错误 设计阶段 编码 40min 查找资料完善设计思路 描述对如何实现最大子数组的查找思路不明确查找并借阅相关资料完善设计思路 10.20 2 函数错误 编码 编译 30min 反复调试查找资料 描述对函数编写不熟悉bug太多反复编译并查找错误 体会 对如何查找二维整数数组最大子数组的和有了深刻的理解对循环函数的使用也更加熟悉但是由于编程能力有限无法解决算法时间复杂度的问题。上述编程的时间复杂度为On^3,不能达到时间复杂度为On 的目标。 合作图片 组内成员张素颖于芳娜 转载于:https://www.cnblogs.com/09-15/p/9822357.html