结对编程之子数组最大的和(由于一直登不上我的账号,在规定日期内只在我搭档的博客上交了)
2016-04-16 18:26
337 查看
合作照片:
设计思想:
在原程序的基础上,再加一个循环,循环从最后一位数开始,到它之前的数结束;
可以将最后一位数赋给第一个数,剩下的数依次向前进一位;
计算方法和上次相同,每次循环都加上相邻的数,比较是否小于0,若小于0则将和的值赋为0,从下一位重新开始相加;若大于最初的最大值,则将和的值赋给最大值;
上次程序实现了首尾不连接的最大值,这次循环实现首尾连接的最大值,后再比较两次最大值,返回其中最大的值。
合作过程:
首先,两人在一起对编程题目进行讨论,发表自己的见解,并且对上次的编程进行回顾总结,对上次的思路进行整理,将这次程序进行完善。
源程序代码:
结果截图:
总结体会:
两次程序的设计思想是基本相同的,我们只需要在原程序的基础上加一个循环求得首尾连接的最大值,再比较出最大值即可。
设计思想:
在原程序的基础上,再加一个循环,循环从最后一位数开始,到它之前的数结束;
可以将最后一位数赋给第一个数,剩下的数依次向前进一位;
计算方法和上次相同,每次循环都加上相邻的数,比较是否小于0,若小于0则将和的值赋为0,从下一位重新开始相加;若大于最初的最大值,则将和的值赋给最大值;
上次程序实现了首尾不连接的最大值,这次循环实现首尾连接的最大值,后再比较两次最大值,返回其中最大的值。
合作过程:
首先,两人在一起对编程题目进行讨论,发表自己的见解,并且对上次的编程进行回顾总结,对上次的思路进行整理,将这次程序进行完善。
源程序代码:
//求数组中子数组和的最大值 import java.util.Scanner; public class Test3{ public static void main(String[] args){ int N=3; int list[]=new int ; //创建一个新数组 Scanner in=new Scanner(System.in); int i; System.out.println("请输入数组:"); for(i=0;i<N;i++) { list[i]=in.nextInt(); } max_ l=new max_(); System.out.print("子数组最大的和为: "+l.max_(list,N)); //调用函数 in.close(); } } class max_ { int max_(int list[],int length) { int i; int max; int lmax1=0; int lmax2=0; int max1=list[0]; //设最大值为list[0] for(i=0;i<length;i++) { lmax1+=list[i]; if(lmax1>max1||lmax1==max1) { max1=lmax1; } if(lmax1<0)//若小于0,则从后一个数开始加和 { lmax1=0; if(max1<list[i]||max1==list[i]) { max1=list[i]; } } //若数组全为负数,求最大值 } //实现首尾相接,求最大值 int sum; sum=list[length-1]; for(i=0;i<length-1;i++) { list[i+1]=list[i]; } list[0]=sum; int max2=list[0]; for(i=0;i<length;i++) { lmax2+=list[i]; if(lmax1>max2||lmax1==max2) { max2=lmax2; } if(lmax2<0)//若小于0,则从后一个数开始加和 { lmax2=0; if(max2<list[i]||max2==list[i]) { max2=list[i]; } } //若数组全为负数,求最大值 } if(max1>max2) { max=max1; } else max=max2; return max; } }
结果截图:
总结体会:
两次程序的设计思想是基本相同的,我们只需要在原程序的基础上加一个循环求得首尾连接的最大值,再比较出最大值即可。
相关文章推荐
- Java中的继承
- laravel路由基础
- 研究Golang
- 算法导论习题:10.2-7 in Go语言
- 迁移到MSYS2 与 Qt 工具链注意的几个事情
- UVa 11292 Dragon of Loowater
- class of Python
- maven项目在eclipse中debug时查看源码的办法
- Java中不引入第三个变量实现两个变量值的交换
- Python开发环境Spyder安装方法
- myeclipse修改web项目名称后,主界面访问不到
- Python之Django1.9 访问静态文件
- Spring上传时报Invalid CSRF Token错误解决方案
- c++面试须知
- QT编程之——使用全局变量
- 20145107 《Java程序设计》第二次实验报告
- 简单Java 多表联查分页显示(初)
- 20145107 《Java程序设计》第七周学习总结
- C++primer练习14.44
- Ubuntu 14.04 eclipse 提示框背景色更改