首页 > 其他 > 详细

结对开发代码规范

时间:2014-03-11 02:51:20      阅读:438      评论:0      收藏:0      [点我收藏+]

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

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

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

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

bubuko.com,布布扣
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];
        }
    }
bubuko.com,布布扣

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

bubuko.com,布布扣
#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\n",first,last,max);

    return 0;
}
bubuko.com,布布扣

bubuko.com,布布扣

结对开发代码规范,布布扣,bubuko.com

结对开发代码规范

原文:http://www.cnblogs.com/zhangbo2011/p/3591910.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!