zoukankan      html  css  js  c++  java
  • 结队开发1----最大子数组

    1、题目:

         返回一个整数数组中最大子数组的和。

    2、要求:

        输入一个整形数组,数组里有正数也有负数。

        数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

        求所有子数组的和的最大值。要求时间复杂度为O(n)。

    3.开发过程及思路:

        我的搭档是范德一,我们在开始准备实验的时候都认为通过两次循环来存储数组的值,而且实现的也比较顺利,因为在之前我们做过相似的实验,在后面的求和的过程也比较一致,但是在求最大的和的时候,我们遇到了问题,由于循环结构和条件结构比较多,使得我们在设置和的初始值时嵌套的不合适,每一次循环都会重置和的值,后来经过我们的研究,将初始值放到循环结构的外部,才使问题得到解决。

    4.程序代码:

    #include<iostream.h>
    
    int main()
    {
    	int a[10];
    	int m;              //m是每组个数
        int *sum=new int[10];
    	cout<<"请输入数组:"<<endl;
    	cout<<"*********************************"<<endl;
    	for(int i=0;i<10;i++)
    	{
    		cin>>a[i];
    	}
    	cout<<"*********************************"<<endl;
    	cout<<"请输入每组个数:"<<endl;
    	cin>>m;
    	cout<<"*********************************"<<endl;
    	int temp=0;
    	for(int n=0;n<m;n++)
    	{
    		temp=temp+a[n];
    	}
    	for(int k=0;k<=(10-m);k++)
    	{
    		sum[k]=0;
    		for(int j=k;j<(k+m);j++)  //a[k]是每组第一个数
    		{
    			sum[k]=sum[k]+a[j];
    		}
    		if(sum[k]>temp)
    		{
    			temp=sum[k];	
    		}	
    	}
    	cout<<"最大和为: "<<temp<<endl;
    	cout<<"*********************************"<<endl;
    	return 0;
    }
    

     5.运行结果截图

    6.合作感受

        通过本次合作实验,让我体会到了合作的力量,对于这次实验而言,一个人完成其实并不难,只是时间长短的问题,但是两个人合作使得实验的进度有很大的提升,而且两个人合作的时候也会出现分歧,但是我觉得分歧是好事,因为出现分歧,使得彼此之间有了更多的交流,一个人的知识和技能往往是不够的,只有通过更多的交流才能学习到彼此的长处,在本次实验中我在一开始认为和的初始值应该放到循环体的内部,但在几次的调试之后,我们发现无法正确的比较出最后的结果,在几次研究之后,我们交流了一下思想,发现确实应该把初始值的设定放到循环体的外部,才使得程序运行正常。

    7.结队成员合照

  • 相关阅读:
    bootstrap 导航栏、输入框按钮组、栅格系统
    Python排序算法冒泡排序选择排序插入排序
    Python 解螺旋数组
    初到博客园,请多指教
    gcd, map for ocaml
    qsort for ocaml
    子序列和最大的问题
    将一个整数划分为非负整数的部分
    filter in Ocaml
    scheme中表只能操作头部带来的一个问题
  • 原文地址:https://www.cnblogs.com/myblog1993/p/4348568.html
Copyright © 2011-2022 走看看