环形数组求最大子数组

题目:
  返回一个环形数组中的最大子数组。
要求:
  两人结对完成编程任务。
  一人主要负责程序分析,代码编程。
  一人负责代码复审和代码测试计划。
  
思想:
  上一次的题目是返回一个整数数组中最大子数组的和;这次在上一次的基础上,我们原本想采用两个相同数组首位相连来实现环形的功能,采用原来的方法未能实现,后来采用课堂上张世通同学讲的方法,每次把数组首个元素移到末尾,重新比较,然后求最大
程序源代码:
 1 #include<iostream>
 2 #include<ctime>
 3 using namespace std;
 4  void ARR(int [],int []);
 5  void MAX(int,int [] ,int [],int ,int,int);
 6   int main()
 7   {    
 8       srand((unsigned)time(NULL));  
 9      int * arr1=new int[5];
10      int * arr2=new int[5];
11      int * arr3=new int[5];
12      int * arr4=new int[5];
13      int * arr5=new int[5];
14      int * result=new int[5];
15      int sum=0,k=0,finally=0;
16      int randoms=0,c1=0,c2=0;
17      cout<<"随机产生10个数值:\n"<<endl;
18      for ( int i=0; i<5; i++ ) {
19          randoms = ( -rand()%100 + ( rand()%100 ) );
20          arr1[i] = randoms;
21          cout<<"数组元素"<<i+1<<"分别为:"<<arr1[i]<<endl;
22      }
23      MAX(0,result,arr1,sum,c2,c1);
24      ARR(arr1,arr2);
25      MAX(1,result,arr2,sum,c2,c1);
26      ARR(arr2,arr3);
27      MAX(2,result,arr3,sum,c2,c1);
28      ARR(arr3,arr4);
29      MAX(3,result,arr4,sum,c2,c1);
30      ARR(arr4,arr5);
31      MAX(4,result,arr5,sum,c2,c1);
32      for ( int i=0; i<5; i++ ) {
33         if(finally<result[i])
34             {    
35         finally=result[i];
36             }
37                 
38      }
39      cout<<"最大数组之和:"<<finally<<endl<<endl;            
40      return 0;
41  }
42  void ARR(int arr1[],int arr2[])
43  {
44  for ( int i=0; i<4; i++ ) {
45          
46          arr2[i] = arr1[i+1];
47          
48      }
49      arr2[4]=arr1[0];
50  }
51  void MAX(int i,int result[],int arr1[],int sum,int c2,int c1)
52  {
53  result[i]=arr1[0];
54  sum=c1=c2=0;
55  
56      for ( int j=0; j<5; j++ ) {
57          if ( sum>=0 ){ c2=j; sum+=arr1[j]; }
58          else { c1=j; sum=arr1[j]; }
59          if( result[i] < sum ) {
60              
61              result[i]=sum;
62          }
63      }
64  } 

运行截图

结对编程总结:

  程序采用函数调用的方式,易于扩展。通过这次编程实践,我觉得交流可以

扩充思路,互相指点,很有帮助。

posted @ 2015-03-30 18:51  花总总  阅读(192)  评论(0编辑  收藏  举报