码迷,mamicode.com
首页 > 编程语言 > 详细

结对开发--求环数组的最大字数组

时间:2015-03-29 23:25:23      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

一、题目要求

  题目:返回一个整数数组中最大子数组的和。
  要求:
  输入一个整形数组,数组里有正数也有负数。
  数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
  如 果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大。
  同时返回最大子数组的位置。
  求所有子数组的和的最大值。要求时间复杂度为O(n)。

二、设计思路

这次的主要问题在于这次的一位数组要首尾相连,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大,所以我们采用以下方法寻找最大值,如输入 a1 a2 a3 a4这4位数,我们将其扩展为

            a1 a2 a3 a4 a1 a2 a3

在第一个的基础上进行扩展,很容易得到结果,并返回最大数组

三、源代码

 1 #include "stdio.h"
 2 #include"stdlib.h"
 3 #include"time.h"
 4 #define N 1000 
 5 int a=0,b=0;
 6 int compare( int arry1[],int length)
 7 {
 8     int max[N],max1,i,j;
 9     int fmax=max[0];
10     for(j=0;j<length;j++)
11     {
12         int sum=0;
13         
14         max1=-9876;
15         for(i=j;i<j+length;i++)
16         {
17             sum=sum+arry1[i];
18             if(sum>=max1)
19                 max1=sum;
20         }
21         max[j]=max1;
22         printf("包含数组中第%d个数的所有子数组中和最大的值为:%d\n",j+1,max[j]);
23         if(max[j]>fmax)
24         {
25             fmax=max[j];
26             a=j;
27             b=i;
28         }
29     }
30     printf("所有子数组的和的最大值为:%d\n",fmax);
31     for(i=a;i<b;i++)
32     {
33         printf("%d ",arry1[i]);
34     }
35     printf("\n");
36     return 0;
37 }
38 int main(int argc, char* argv[])
39 {
40     int arry[N],arry1[N];
41     int length;
42     srand(time(NULL));
43     printf("请输入要比较整数的个数:");
44     scanf("%d",&length);
45     printf("请输入整数");
46     for(int i=0;i<length;i++)
47     {
48         scanf("%d",&arry[i]);
49     
50     }
51     for( i=0;i<2*length-1;i++)
52     {
53         if(i<length)
54         {
55             arry1[i]=arry[i];
56         }
57         else
58         {
59             arry1[i]=arry[i-length];
60         }
61         printf("%d ",arry1[i]);
62     }
63     printf("\n");
64     compare(arry1,length);
65     return 0;
66 }

运行结果:

技术分享

四、心得体会

      通过这几次的结对合作,我体会到了团结的重要性,我想这也是老师的目的吧,在这之前老师总是让同学们把自己的想法说出来,他们的想法都特别的,我想着也是我的不足之处吧,我希望以后有更多的机会去互相学习,互相进步。

结对开发--求环数组的最大字数组

标签:

原文地址:http://www.cnblogs.com/yuanyajiao/p/4376683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!