求子數組的最大和:算法求驗證

方法是找到線性函數圖像的極點:
#include "stdio.h"
int GetMaxChildArr( int arr[],int size)
{
	int i = 0, sum = 0;		
	int pos =0x80000000 ;	/*/一個負的非常大的數,作爲最大值的臨界點*/

	for(i=0 ; i < size ;i++)
	{	
		sum += arr[i];

		if( pos <= sum   )	/*如果加起來之後,大於臨界點,就修改臨界點*/
			pos = sum;
	
		if(sum < 0)		/* 如果前面的數字小於0,忽略前面的*/
			sum =0 ;
	}
	return pos;	/*返回臨界點*/
}

void main()
{
	int a[9] ={-8,-2,-3,-4,-1,-3};
	int b[9] ={1, -2, 3, 10, -4, 7, 2, -5  };
	
	printf("%d\n",GetMaxChildArr(a,6));
	printf("%d\n",GetMaxChildArr(b,8));
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章