结对开发(一位数组)

一 ,要求:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。

二,设计思路:

    本次实验设计设定的数组长度为10,采用随机数避免键盘输入,用动态规划算法实现。

三,代码实现:

 1 #include <iostream>
 2 #include<stdlib.h>
 3 #include<time.h>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int i;
 9     int a[10];
10     int max = 0;
11     int b = 0;
12 
13     srand(time(NULL));
14     cout<<"数组为:";
15     for (i = 0; i<10; i++)
16     {
17         a[i] = rand() % 201-100; //随机生成-10 到 10的整数
18     }
19     for (i = 0; i<10; i++)
20     {
21         cout << a[i] << "      ";
22     }
23     cout << endl;
24 
25     for (i = 0; i < 10; i++)
26     {
27         b += a[i];
28         if (b < 0)
29             b = 0;
30         if (b > max)
31             max = b;
32     }
33     if (max == 0)
34     {
35         max = a[0];
36         for (i = 0; i < 10; i++)
37         {
38             if (max < a[i])
39             {
40                 max = a[i];
41             }
42         }    
43     }
44     cout <<"最大子数组为:"<< max << endl;
45     system("pause");
46     return 0;
47 }

四、运行截图

 

五、结对开发感想

   队友可以在自己卡壳的时候给以思想上的疏通,当思路不清晰时通过讨论可以是双方的思路都清晰起来,不但能够加深对代码的印象,还能对代码的编写提供更清晰的思路,使编程的效率提高。

六、真相图

 

posted @ 2015-03-18 21:15  小崔007  阅读(125)  评论(0编辑  收藏  举报