输入一个整形数组,求所有子数组的和的最大值
2013-03-06 23:45
369 查看
本想将最大值所对应的字串也打印出来的,但是想来想去,想不到用什么办法来记录字串的两个边界值。请各位达人不吝惜指教
/* 题目: 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2, 因此输出为该子数组的和18。 */ #include <stdio.h> #include <time.h> #include <stdlib.h> #define ARRAY_SIZE 20 /* 用随机数填写数组 */ void fillArrayWithRand(int iarray[], int num) { int i = 0; int itmp = 0; srand((int)time(0)); /* 如果不设置随机种子那么每次产生的随机数都是一样的 */ for (; i < num; ++i) { itmp = (rand()) % 0xf; /* 产生15之内的随机数 */ /* 产生正负数 */ if (0 == itmp % 2) { iarray[i] = itmp; } else { iarray[i] = -itmp; } } for (i = 0; i < ARRAY_SIZE; ++i) { printf("%d ", iarray[i]); } printf("\n"); } void findMaxValueSubArray(int iarray[], int num) { int isum = 0; int i = 0; int itmp = 0; for (; i < num; ++i) { if (isum < 0) { isum = iarray[i]; } else { isum += iarray[i]; } /* 将最大值记录下来 */ if (itmp < isum) { itmp = isum; } } printf("isum = %d \n", isum); } int main() { int iarray[ARRAY_SIZE]; /* 产生一个正负数的数列 */ fillArrayWithRand(iarray, ARRAY_SIZE); /* 计算出字串的最大值 */ findMaxValueSubArray(iarray, ARRAY_SIZE); return 0; }
相关文章推荐
- 输入整形数组,数组里有正数也有负数,数组中一个或连续的多个整数组成数组的子数组,求所有子数组中和的最大值 ,例如输入的数组为{1,-2,3,10,-4,7,2,-5}和最大的子数组为{3,10,
- 题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个 子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n)。
- 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个 子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。
- 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1},
- 一个整形数组中有正数也有负数, 数组中连续一个或多个组成子数组,每个子数组都有一个和, 求所有子数组中和的最大值
- 一个整形数组中有正数也有负数,数组中连续一个或多个组成子数组,每个子数组都有一个和,求所有子数组中和的最大值
- 一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和,求所有子数组的和的最大值,要求时间复杂度为O(n)。
- 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1},
- 输入一个整形数组,数组中有正数也有负数,求该数组中所以子数组和的最大值
- 输入一个整型数组,求所有子数组中和的最大值
- 1.输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值;
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 3.输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- // 1、输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 一个整形数组中有正数也有负数,数组中连续一个或多个组成子数组,每个子数组都有一个和,求所有子数组中和的最大值
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中最大值
- 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值