计算连续最大子数组问题

#include "stdafx.h"
#include "stdlib.h"
int a[1000] = { 0 };
int _tmain(int argc, _TCHAR* argv[])
{
	int a[1000] = { 0 };
	for (int i = 0; i < 1000; i++)
	{
		a[i] = rand() % 10000 - 5000;
	}
	for (int j = 0; j < 999; j++)
	{
		printf("%d\t", a[j]);
	}

	//计算连续最大子数组
	int maxsum = 0;
	int nowsum = 0;
	int x;
	for (int k = 0; k <1000; k++)
	{
		nowsum += a[k];
		x = nowsum;
		if (a[k +1] > 2147483647 - x)
		{
			printf("超出范围");
			maxsum = maxsum + a[k + 1];
			printf("%d", k+1);
			break;
		}
		else
		{
			if (nowsum > maxsum)
			{
				maxsum = nowsum;
			}
			else if (nowsum < 0)
			{
				nowsum = 0;
			}
		}
	}	
	printf("\n\n结果是\n");
	printf("%d\n", maxsum);

	return 0;
}

  这次直接遇到的问题一个是如何计算连续最大子数组,一个是如何判断结果超限,确实用了不少时间来思考,思路是分为三段1是设置一个数组能储存1000个元素2是计算最大连续子数组3是设立判断是否超限的条件.这次的任务使我们有所收获,但也只做到最终结果超限的判断却并没有想到如何计算出超限的最终结果,不太清楚该怎么办.

这次作业让确实发现自己水平不太好,希望努力能把这门课越学越好

猜你喜欢

转载自www.cnblogs.com/logo132/p/9784637.html