求一个数组的最大子数组之和01

这次的题目:

所以经过同学的指点终于把程序做了出来

1.用户随机输入10个数作为数组

2.根据二维数组作为子数组最大值的表示方式

3.用递推的方法成功找到子数组最大值

4.成功找到最大值与最大子数组

 1 #include<iostream>
 2 #define N 10
 3 
 4 using namespace std;
 5 
 6 void main()
 7 {
 8     int A[N];        //用户输入的数组
 9     int B[N][N];   //存放所有的数组和
10     int i, j, k;
11     int sum;
12     cout << "输入" << N << "个数:" << endl;
13     for (i = 0; i<N; i++)
14     {
15         cin >> A[i];
16     }
17 
18     cout << endl;
19     for (i = 0; i<N; i++)
20     {
21         for (j = 0; j<N - i; j++)
22         {
23             sum = 0;
24             for (k = j; k <= j + i; k++)
25             {
26                 sum = sum + A[k];
27                 B[i][j] = sum;
28             }
29         }
30     }
31     //最大子数组的位数
32     int max = A[0];
33     int x, y;
34     for (i = 0; i<N; i++)
35     {
36         for (j = 0; j<N - i; j++)
37         {
38             if (max<B[i][j])
39             {
40                 max = B[i][j];
41                 x = i;
42                 y = j;
43             }
44         }
45     }
46     cout << "最大子数组之和为:" << max << endl;
47     cout << "最大子数组为:";
48     for (i = 0, j = y; i <= x; i++, j++)
49         cout << A[j] << "	";
50 }

合作人:靳琪
原文地址:https://www.cnblogs.com/zjy666/p/5323005.html