这次的题目:
所以经过同学的指点终于把程序做了出来
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 }
合作人:靳琪