结对开发代码规范

题目:求一个数组中子数组和最大的数组,并返回子数组中是由哪几个数组元素构成

<1>首先我们组进行这个程序应该怎么实现的讨论,认为在一个数组中要想找到子数组和最大的数组,我们需要求出相邻数组的和然后进行比较找到最大的。

<2>以数组【4,5,-3,-2,0】为例,先以第一个数为节点,然后进行第一个数与第二个数相加,如果和大于第一个节点,我们更改和的值,并把开始数组下标保存都first变量中,结束数组下标保存到final变量中,后面的依次类推.;在以第一个数为节点的情况都找完以后,我们开始以第二个数为节点,以后依次类推。通过这种方式我们就可以找到所有子数组的和并进行比较,把数组和最大的数放入sum。

<3>开始的我们组编的代码有一些不足,代码如下

for(int j=0;j<k;j++)
    {
        for(i=j+1;i<k;i++)
        {
        
            if(i!=j)
            {
                sum=arr[j]+arr[i];
                if(sum>max)
                {
                    max=sum;
                    first=j;
                    last=i;
                }
            }
            //sum=arr[j];
        }
    }

其中我们没有考虑第一个数组为最大值,后经代码复审,更改了上述问题,代码如下

#include "stdafx.h"

int main(int argc, char* argv[])
{
    int arr[100],sum,k;
    int max,first,last;
    printf("请输入数组的数字个数:");
    scanf("%d",&k);
    printf("请输入数组的内容:");
    for(int i=0;i<k;i++)
    {
        scanf("%d",&arr[i]);
    }

    sum=max=arr[0];

    for(int j=0;j<k;j++)
    {
        sum=arr[j];
        for(i=j;i<k;i++)
        {
        
            if(i!=j)
            {
                sum=sum+arr[i];
                if(sum>max)
                {
                    max=sum;
                    first=j;
                    last=i;
                }
            }
            else
            {
                if(arr[i]>max)
                {
                    max=arr[i];
                    first=j;
                    last=i;
                }
            }
        }
    }

    printf("数组arr[%d]-arr[%d]的和最大,最大值为:%d
",first,last,max);

    return 0;
}

原文地址:https://www.cnblogs.com/zhangbo2011/p/3591910.html