经过小逸的提醒,用了改为二维数组,还是有问题
#include<iostream> using namespace std; int Max(int b[][100], int i, int num, int hang); int main() { int sum=0; cout << "请输入数组元素个数:"; int num; cin >> num; cout << "请输入数组元素:"; int array_[100][100], i, j, far, k = 0; int a[100]; for (i = 0; i < num; i++) cin >> array_[0][i];//第一行存储输入的数组 int hang_max[100][100];//求每行的最大值 for (i = 0; i < num; i++) //列数 { //far为子数组元素个数 分别存入第far行 for (far = 1; far < num - i; far++) { for (j = 0; j < num; j++)//行数 不超过输入数组长度 { for (k = i; k < i + far; k++) { sum += array_[0][k];//子数组元素求和 } array_[far][i] = array_[far][i] + sum;//二维数组第一行为输入数组 } } } for (i = 0; i < num; i++) { for (j = 0; j < num; j++) { hang_max[0][i] = Max(array_, i, num, far); } } cout << Max(hang_max, i, num, j)<<" "; return 0; } //求数组最大值 int Max(int b[][100], int i, int num,int hang) { int M = b[0][0];//初始化二维数组 for (i = 0; i < num; i++) { if (b[hang][i] > M) M = b[hang][i]; } return M; }
明天把大神说的动态规划算法搞懂,把这个二维数组这个尽量搞定,真想说:一个好的算法能解救程序猿于水火,编程中思考的过程真的很美妙