首页 > 其他 > 详细

寻找数组中子数组和的最大值

时间:2014-03-11 00:15:30      阅读:508      评论:0      收藏:0      [点我收藏+]

      今天上软件工程的时候我们进行了一项结对项目,目的是寻找出一个数组中子数组和的最大值!

      核心算法思想:既然是寻找子数组和的最大值,那就要明确一下子数组,子数组必须是数相邻!先确定该数组有多少数,根据用户的要求,当用户输入数组有多少数时,这时将这个数存到n中,然后数组就行为了a[n],然后将a[0]的值赋给sum和max,sum代表的是和,max代表的最大值。根据for循环,从第一个数开始进行sum求和,然后将得到的值与max比较,如果sum大于max的话,就将sum的值赋给max(如果sum小于max,就不进行操作),然后继续循环,直到循环结束,最后得到的max的值就是所有子数组和的最大值!

        小组成员:刘三龙  严晓雄

       我们很快就确定了自己的想法,然后进入了编程,很快就得到了整个源代码,并且进行了各种测试,这些都是我们在课堂上就完成了的!在下面我们会把我们的讨论草图,用例,还有源代码放在下面!

源代码如下:

bubuko.com,布布扣
 1 #include "stdafx.h"
 2 
 3 void sort(int n,int a[])
 4 {
 5    int N;
 6    int i=0;
 7    int j=0;
 8    int sum=0;     //数组中元素进行求和
 9    int max;       //数组中子数组的最大值
10    int b[100];
11    N=n;
12    for(i=0;i<N;i++)
13    b[i]=a[i];
14    if(N==0)
15    {
16         printf("输入错误!\n");
17    }
18    else
19    {
20         printf("请输入需要输入的数:");
21         for(i=0;i<N;i++)
22             scanf("%d",&b[i]);
23         max=b[0];
24         for(i=0;i<N;i++)           //先从第一个数开始循环到最后一个数,然后再从第二个开始到最后一个,直到最后一个自己
25         {
26             sum=b[i];
27             for(j=i+1;j<n;j++)
28             {
29                   sum=sum+b[j];
30                   if(sum>max)     //如果sum>max,就将sum的值赋给max
31                   {
32                       max=sum;
33                   }
34             }
35         }
36         printf("最大的子数组之和为:%d\n",max);
37    }
38 }
39 
40 int main(int argc, char* argv[])
41 {
42     int i=0;
43     int n;
44     int j=0;
45     int max=0;
46     int sum=0;
47     int a[100];
48     printf("需要输出几个数:");
49     scanf("%d",&n);
50     sort(n,a);
51     return 0;
52 }
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣

寻找数组中子数组和的最大值,布布扣,bubuko.com

寻找数组中子数组和的最大值

原文:http://www.cnblogs.com/wafyxx/p/3592408.html

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