1. 程式人生 > >計算連續最大子數組問題

計算連續最大子數組問題

i++ main else stdlib.h rand() 直接 include += 沒有

#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是設立判斷是否超限的條件.這次的任務使我們有所收獲,但也只做到最終結果超限的判斷卻並沒有想到如何計算出超限的最終結果,不太清楚該怎麽辦.

技術分享圖片技術分享圖片

這次作業讓確實發現自己水平不太好,希望努力能把這門課越學越好

計算連續最大子數組問題