求数列最大值的子序列输入一组数,求出数值子序列的最大数值,只要计算出最大子序列的和就行,不用求出最大数值对应的序列。
- 题目描述如图
- 运行结果
题目描述如图
下面给出解题思路代码(两层for循环遍历):
//输入一组整数,求出数字子序列的最大值,只要计算出最大子序列的和,不用求出最大数值对应的序列. #include#include int main() { //定义这个序列 int arr[] = {0, -3, 6, 8, -20, 21, 8, -9, 10, -1, 3, 6, 5}; //存储这个最大数值 初始化为arr[0] int max = arr[0]; //遍历使用的变量 int i, j; //临时变量,存储子序列之和 int tempSum = 0; //数组大小 int sizeOfArr = sizeof(arr) / sizeof(int); //子序列分别从每一个元素开始 for (int i = 0; i < sizeOfArr; i++) { //每一次循环都要置0 tempSum = 0; //不同的结尾子序列 for (int j = i; j < sizeOfArr; ++j) { tempSum += arr[j]; //判定和是否大于max if (tempSum > max) { max = tempSum; } } } printf("max = %d n", max); return 0; }
运行结果



