zoukankan      html  css  js  c++  java
  • 首尾相连的一位数组最大子数组和

    题目:在原有的一位数组上进行扩展,求首尾相连的最大子数组的和:

    要求: 输入一个一维整形数组,数组里有正数也有负数。

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

             求所有子数组的和的最大值。

    结对编程要求: 两人结对完成编程任务。 一人主要负责程序分析,代码编程。

                        一人负责代码复审和代码测试计划。

                       发表一篇博客文章讲述两人合作中的过程、体会以及如何解决冲突(附结对开发的工作照)。

    结对开发过程:

        这次的编程开发是基于上次的以为数组,我和我的搭档@快乐的小菜鸟开始了认真的讨论,再结合课堂上的同学讨论,如何能在一维数组原有的基础上,加上首尾相连这个条件,同时降低时间复杂度,这种方法的大概思想是:遍历数组里面的每一个数将第一个数变为最后一个数,具体算法 a[i-1]=a[i],这样又变成了一个新的一维数组,输出每个数组的最大子数组和,然后比较每个输出的和,找出最大的数:

    具体代码:

    #include <iostream.h>  
      
    int maxSum(int* a, int n)  //定义一个求一维数组的最大子数组和的方法
    {  
        int sum=0;  
           
        int b=0;  
        
        for(int i=0; i<n; i++)  
        {  
            if(b<0)           
                b=a[i];  
            else  
                b+=a[i];  
            if(sum<b)  
                sum=b;  
        }  
        return sum;  
    }  
      
    int main()  
    {   int n,temp,b;
        int  sum=0;
    	int i;
    	int a1,a2;
        cout<<"请输入数组的元素个数: "<<endl;
        cin>>n;
        cout<<"请输入数组的元素: "<<endl;
    	int *a=new int[n];
    	
        for( i=0;i<n;i++)
    	{cin>>a[i];}
    	cout<<"此首尾相连的数组中最大子数组的和有以下几种可能:"<<endl;
    	cout<<"第1种排列方式:"<<endl;
        for( i=0;i<n;i++)
    	{cout<<a[i]<<"  ";}
    	cout<<"最大子数组和为:"<<maxSum(a,n)<<endl;
    	a1=maxSum(a,n);
        for(b=1;b<n;b++)
    	{
    		temp=a[0];
    	for(i=1;i<=n;i++)
    	 {  
            a[i-1]=a[i];
    			
    	 }
    	   a[n-1]=temp;
    	   cout<<"第"<<b+1<<"种排列方式:"<<endl;
           for( i=0;i<n;i++)
    	   {cout<<a[i]<<"  ";}
    	   cout<<"最大子数组和为:"<<maxSum(a,n)<<endl;
    	   if(maxSum(a,n)>=sum)
    	   {sum=maxSum(a,n);}
    	} 
    	  a2=sum;
    	  cout<<endl;
    	  if(a1>=a2)
    	  {cout<<"综上,最大的子数组和为:"<<a1<<endl;}
    	  else
    	  {cout<<"综上,最大的子数组和为:"<<a2<<endl;}
        
        return 0;  
    } 
    

      

    截图:

    实验感想:

       这次感觉题目算是比较简单,想通了其中的关键算法核心,就是a[i-1]=a[i],只不过算法复杂度可能不符合老师的要求!

    结对伙伴截图:

  • 相关阅读:
    httpcontext in asp.net unit test
    initialize or clean up your unittest within .net unit test
    Load a script file in sencha, supports both asynchronous and synchronous approaches
    classes system in sencha touch
    ASP.NET MVC got 405 error on HTTP DELETE request
    how to run demo city bars using sencha architect
    sencha touch mvc
    sencha touch json store
    sencha touch jsonp
    51Nod 1344:走格子(贪心)
  • 原文地址:https://www.cnblogs.com/TSbj/p/4378707.html
Copyright © 2011-2022 走看看