성형 배열 을 입력 하여 모든 하위 배열 의 최대 값 을 구하 십시오.

1374 단어 알고리즘
최대 값 에 대응 하 는 문자열 도 인쇄 하려 고 했 지만 가 고 싶 어서 문자열 의 두 경계 값 을 어떤 방법 으로 기록 할 지 생각 나 지 않 았 습 니 다.달인 여러분, 가르침 을 아 끼 지 마 십시오.
 
/*
   :
         ,          。
                     ,          。
             。        O(n)。
 
         1, -2, 3, 10, -4, 7, 2, -5,        3, 10, -4, 7, 2,
            18。
*/

#include 
#include 
#include 

#define ARRAY_SIZE 20

/*          */
void fillArrayWithRand(int iarray[], int num)
{
	int i = 0;
	int itmp = 0;

	srand((int)time(0)); /*                          */

	for (; i < num; ++i)
	{
		itmp = (rand()) % 0xf; /*   15       */

		/*       */
		if (0 == itmp % 2)
		{
			iarray[i] = itmp;
		}
		else
		{
			iarray[i] = -itmp;
		}
	}

	for (i = 0; i < ARRAY_SIZE; ++i)
	{
		printf("%d ", iarray[i]);
	}
	
	printf("
"); } void findMaxValueSubArray(int iarray[], int num) { int isum = 0; int i = 0; int itmp = 0; for (; i < num; ++i) { if (isum < 0) { isum = iarray[i]; } else { isum += iarray[i]; } /* */ if (itmp < isum) { itmp = isum; } } printf("isum = %d
", isum); } int main() { int iarray[ARRAY_SIZE]; /* */ fillArrayWithRand(iarray, ARRAY_SIZE); /* */ findMaxValueSubArray(iarray, ARRAY_SIZE); return 0; }

 

좋은 웹페이지 즐겨찾기