计算一个整形数组里的连续元素和的最大值
例:{9, -12, 120, 8, -20, 100, 30, -89, 20}
结果是{120, 8 , -20, 100, 30}的和最大,为 238
函数声明:
int max_sum(int *array, int array_len);
#include<stdio.h>
#define N 10
// 只要结果
int a[N];
int max_sum ( int *array, int array_length ) {
int tags = 0;
int max, i, j, k, m;
for (i = 0; i < array_length; i++ ) {
max = 0;
for ( j = i; j < array_length; j++ ) {
max += array[j];
if ( tags < max || tags == 0 ) {
k = i;
m = j;
tags = max;
}
}
}
printf ("the max sum is %3d ,from %3d to %3d\n",tags,k+1,m+1 );
}
main () {
int i;
int *p;
for (p = a; p < a+ N; p++ )
scanf ("%d",p);
p = a;
max_sum ( p, N );
}
优化:最大序列肯定是以正数开始 正数结束。如果全是负数就求最大值 先从左边遍历找出第一个正数 同时记录最大值。
分享到:
相关推荐
输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,...
定义20个元素的整形数组赋值。输入一个数如果该数在数组中存在,删除该数。其后的每个数前移一位。最后补0;
在编程中非常常用的算法:计算整形数组中第k小的数
//声明一个整形数组 //声明一个字符串类型的数组 //创建数组 //声明数组的同时进行创建 //初始化数组 //循环为整型数组赋值 //循环输出整型数组中的元素 //求整形数组的累加和 //定义整形数组 //从键盘接收数据,...
java代码-1.定义一个一维数组,求出数组的最大值,最小值,平均值。
C语言程序设计-编写程序。...⑴求出这8个数据的和、最大值、最小值及平均值。 ⑵求这8个数据的正数之和、负数之和(或正数与负数的个数); ⑶求这8个数据的奇数之和、偶数之和(或奇数与偶数的个数)。
在C语言程序中定义一整形数组,输入数组的各个元素;用汇编语言子程序求数组元素的平均值及小于此值的元素个数。最后在C程序中显示平均值和小于此值的元素个数。 郑旅军原创,谢绝抄袭!!
定义20个元素的整型数组并赋初值。输入一个数,如果该数在数组中存在,则删除该数,其后的每个数前移一位,最后补0。
计算一个数组中前2.3.4.5.。。。。。sizeof(array)的最近距离,使用了动态规划算法,欢迎各位下载,手机模拟端亲测,
数组a中已存有互不相同的10个整数从键盘输入一个整数,找出与该值相同的数组元素下标。 (如果没找到,输出“没找到”).c
给定两个整型数组,本题要求找出不是两者共有的...题目保证至少存在一个这样的数字。同一数字不重复输出。 输入样例: 10 3 -5 2 8 0 3 5 -15 9 100 11 6 4 8 2 6 -5 9 0 100 8 1 输出样例: 3 5 -15 6 4 1
又两个数组,在每一个数组中有若干个整型数据元素,求出组合到一起之后得到的值用数组保存并打印出来
实验1 整形数组元素求和实验1计算面积实验2 computer类 继承实验2 computer类 友元实验2 CPU类实验2 P实验3 animal实验3 BaseClass实验3 vehicle等代码文件
两个升序的数组A、B,将AB合并到C,保持升序,去除重生的元素
字符数组
定义一个一维整形数组num[50],输入正整数m、n(2≤m≤n≤7),输入一个m*n整形矩阵(值小于100),编写函数place()完成矩阵元素S型放置,从小到大排列,使用指针完成地址传递,主函数完成数组输入和输出。...
注意:源程序是为qt写的,不过基本上都用的是c语言,下载之后稍作修改就可以在vc++上运行。将int数组转成uchar数组保存到数据库,然后再取出来将uchar数组还原成int数组。
基础小白
这种类型的对象可以存储10个20~80之间的整数,即他的内部有一个整型数组存储数据。编程: (1) 判断两个inergerSet类对象S1和S2是否相等。提示:集合相等的前提是所有元素相等。 (2) 输出两个集合对象的交集。 ...