【编程练习】求数组和最大的子数组

上代码先:

问题代码来源:http://blog.csdn.net/v_JULY_v

 

 

// MaxSum.cpp : 定义控制台应用程序的入口点。
//
//copyright@ July
//July、updated,2011.05.25。

#include "stdafx.h"
#include <iostream>
using namespace std;

int maxsum(int a[], int n)
{
	int max = a[0];//全负情况,返回最大数
	int sum = 0;
	for (int j = 0; j< n; j++)
	{
		if (sum >= 0)
			sum = sum + a[j];	//如果加上某个元素,sum>=0 的话,就加

		else
			sum = a[j];		//如果加上某个元素,sum<0 了,就不加

		if(sum > max)
			max = sum;

	}

	return max;

}

//Algorithm 4:时间效率为O(n)
//同上述第一节中的思路3、和4。
//《Data structures and Algorithm analysis in C》中实现。
int MaxSubsequenceSum(const int A[],int N)
{
	int ThisSum,MaxSum,j;
	ThisSum=MaxSum=0;
	for(j=0;j<N;j++)
	{
		ThisSum+=A[j];
		if(ThisSum>MaxSum)
			MaxSum=ThisSum;
		else if(ThisSum<0)
			ThisSum=0;
	}
	return MaxSum;
}

int main()
{
	int a[]={-1,-2,-3,-4,10,1,-3};

	cout<<maxsum(a,7)<<endl;
	cout<<MaxSubsequenceSum(a,7)<<endl;

	getchar();
	return 0;
}

 

时间: 2024-11-10 07:39:21

【编程练习】求数组和最大的子数组的相关文章

C数组中最大和的子数组

题目: 输入一个整型数组,数据元素有正数也有负数,求元素组合成 连续子数组之和最大的子数组,要求时间复杂度为O(n). 例如: 输入的数组为1, -2, 3, 10, -4, 7, 2, -5,最大和的连续子数组为3, 10, -4, 7, 2,其最大和为18. 背景: 本题最初为2005年浙江大学计算机 系考研题的最后一道程序设计题,在2006年里包括google在内的很多知名公司都 把本题当作面试题. 由于本题在网络中广为流传,本题也顺利成为2006年 程序员面试题中经典中的经典. 分析:

c语言-关于反序输出的一个编程,求问

问题描述 关于反序输出的一个编程,求问 为什么反序输出后有个a,怎么去掉啊,新手求问 解决方案 因为你输出了一个不存在数组的数,a[5],把那个i改为i<5 解决方案二: 因为数组是从0开始计数的,所以你的数组长度是5, 但是元素是a[0], a[1], a[2], a[3], a[4] 反序输出: for (int i = 0; i < 5; i++) printf("%c", a[5-i-1]); 解决方案三: char a[5]只能最多放4个字符,因为作为结束符,也要

用Keil、C语言对C8051F310编程,求例程。。

问题描述 用Keil.C语言对C8051F310编程,求例程.. 随意的例程就行如果有按键消抖,数码管显示,占空比调节就更好了感激不尽! 解决方案 硬件电路图都没有--

c语言 c++-c语言求大神解答,一个数组的基础问题

问题描述 c语言求大神解答,一个数组的基础问题 数组的地址是什么?是不是就是数组名,也就是第一个元素的地址,也就是这个数组的首地址? 解决方案 数组名可以当成指向数组首元素的地址使用. 例如:int a[10]; 可以通过: cout<<*a<<endl; //来输出数组a中的第一个元素. cout<<*(a + i)<<endl; //来输出数组中的第i个元素. 下面两个输出的地址值也是相同的. printf("--->%pn",

c语言-C语言数组作为参数传入子函数

问题描述 C语言数组作为参数传入子函数 对不起,可能我没表达清楚,我想问,数组作为参数传入子函数为什么不是作为形式参数传入,请你看程序运行结果,如果数组作为形式参数传入子函数,那么形式参数的值并不会影响原来main函数中的值,但是实际上,main函数中数组原来的值已经被修改了,这是因为数组传入的是地址(指针),我的问题就在这里,传入的是指针为什么不是用完就扔的形式参数. 这与c语言的设计有关是吗?内部有什么机制吗? 解决方案 首先提一下std C 调用约定,参数的传递使用栈. 在传递时首先将参数

想要深入学习编程,求推荐语言-目的是算法实现和数据分析

问题描述 想要深入学习编程,求推荐语言-目的是算法实现和数据分析 目前懂得Python, Vb.Net, R的基本知识,并稍微懂得一些C# 实验室大概要向数据处理方面靠一靠,主要涉及的是地理数据库(关系数据库) 最基本需要是实现功能,例如spatial data clusering啊,定制的决策树啊一类的,也有可能涉及到批处理和其他的底层地理数据库处理. 以后可能有一定图形界面的需求. 我应该主要深入学习哪一门语言比较合适我的需求? 或者有什么其他的语言推荐吗 解决方案 推荐python,现在p

c#编程代码求解救!!!

问题描述 c#编程代码求解救!!! 利用c#中的文本文件读写方法,开发一个简单记事本,要求能实现文件的新建.打开.编辑.保存.退出功能 解决方案 放一个菜单,一个文本框,包括这些命令 新建: this.TextBox1.Text = ""; 打开 OpenFileDialog ofn = new OpenFileDialog(); if (ofn.ShowDialog == DialogResult.OK) { this.TextBox1.Text = File.ReadAllText

c++-数组的指针怎么访问数组中的元素求大神帮忙

问题描述 数组的指针怎么访问数组中的元素求大神帮忙 所有需要的文件均已包含 using arry=int[5]: arry* chen() [ Int j=0,i,a[5]: While(cin>>i) {if(j==5) Break: a[j]=i: ++j: } return &a: ] Int main() {Int (*b)[5]: b=chen(): for(int i=0:i<5:i++) cout<<(*b)[i]<<endl: } 解决方案

vb6 0-vb里面子过程参数为数组时,调用子过程出现数组未定义错误

问题描述 vb里面子过程参数为数组时,调用子过程出现数组未定义错误 大家好,我有段用松弛迭代法解线性方程组的程序,程序包括一个子过程ssor. 该子过程含有数组参数,在调用子过程时,提示数组参数未定义的错误. 下面是该程序,请热心人帮忙检查检查,谢谢大家! Sub ssor(a() As Single, n As Integer, b() As Single, x() As Single, eps As Single, om As Single, count As Integer) ' 松弛迭代