输出整数数组中 最大的子数组的结果

今天课堂上老师布置的任务是  编写程序 输出整数数组中 最大的子数组;

       

      int i,r,u=0,w,q,max,sum=0;
        max=a[0];
        for(i=u;i<j;i++)
        {
            for(r=u;r<=i;r++)
            {
                sum=a[r]+sum;
            }
            if(max<sum) 
            {
              max=sum;
              w=u;
              q=i;
              
            }
            sum=0;
            if(i==j-1) {u++;i=u-1;}
        }
        cout<<"子数组为:";
        for(r=w;r<=q;r++)
        {
            cout<<a[r]<<" ";
        }
        
        return max;
    } 

 

开始我们我们就是输入5个数,然后 遍历寻找最大的;后来利用for循环语句;再到后来if(i==j-1) {u++;i=u-1;}的时候,

我们混乱了 一下写成了if(i==j-1) {u++;i=u-;}然后每次输出的结果只有第一个数。后来才发现的问题;

课下又实现了对最大子数组的记录并且修改完善;

int max_shuzu(int a[],int j) 
{
    if(a==NULL) return -1;
    else
    {
        int i,k=0,sum=0,max;
        for(i=0;i<j;i++)
        {
            sum=sum+a[i];
            if(max<sum) 
            {
                max=sum;
            }
            if(i==j-1)
            {
                i=k++;
                i=i-1;
                sum=0;
            }
        }
        return max; 
    }
    
    
}

    

int main(int argc, char *argv[])
{
    int a[5]={1,2,4,2,3};
    cout<<"最大和为:"<<max_shuzu(a,5); 

    return 0;
}

 

 

posted @ 2014-03-10 19:34  超/aiq越  阅读(269)  评论(0编辑  收藏  举报