• 软件工程结对开发之求一个数组中连续最大子数组之和


    一、团队成员:

         檀威,陈志利

    二、项目名:

          求一个数组中连续最大子数组之和

    三、我们的设计思路:

          设sum[i]为以第i个元素结尾且和最大的连续子数组。对于元素i,所有以它前面的元素结尾的子数组的长度都已经求得,那么以第i个元素结尾且它们之和最大的连续子数组要么是以第i-1个元素结尾且它们之和最大的连续子数组加上这个元素,要么是只包含第i个元素,即sum[i] = max(sum[i-1] + arr[i], arr[i])。可以通过判断sum[i-1] + arr[i]是否大于arr[i]来做选择,而这实际上等价于判断sum[i-1]是否大于0。由此我和陈志利按照这个思路编程如下:

    四、代码:

    #include<iostream.h>
    void main()
    {
    	while(1)
    	{
    		int length;
    		int *arr=new int[length];
    		cout<<"请输入该数组长度:";
    		cin>>length;
    		cout<<"请输入该数组:";
    		for(int i=0;i<length;i++)
    		{
    			cin>>arr[i];
    		}
    		int result = arr[0];
    		int sum = arr[0];
    		for(i=1;i<length;i++)
    		{
    			if (sum > 0)
    			{
    				sum += arr[i];
    			}
    			else
    			{
    				sum =arr[i];
    			}
    			if (sum >result)
    				result = sum;
    		}
    		cout<<"该数组中最大连续子数组之和是:"<<result<<endl;
    		cout<<"----------------------------------------"<<endl;
    	}
    } 

    五、运行及测试截图:

    测试了当全是负数,全是正数,全是0,有正有负及各种特殊情况等,都运行正确。

    六、总结:

    虽然这次不是第一次结对做项目,但是过程中明显感觉解决问题的时候比一个人考虑的周到全面,效率提高很多,相互学习配合比较顺利。

    七、工作合照

  • 相关阅读:
    人生中对我影响最大的三位老师
    自我介绍
    对我影响较大的三位老师
    自我介绍
    Java入门到精通——基础篇之static关键字
    天猫优惠券面值可以随意修改
    常用的PC/SC接口函数
    批量删除本地指定扩展名文件工具
    算法:C++排列组合
    Java入门到精通——基础篇之面向对象
  • 原文地址:https://www.cnblogs.com/2015tan/p/4346913.html
Copyright © 2020-2023  润新知