69,336
社区成员
发帖
与我相关
我的任务
分享
// MaxSubArray.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <Windows.h>
const int ARRAY_COUNT = 10; // 数组定义为10个元素
void GetMaxSubArray(int aNum[])
{
int nLeft = 0;
int nRight = 0;
int nMaxSum = aNum[0];
for(int i = 0; i < ARRAY_COUNT; i++)
{
int nCurSum = 0;
for(int j = i; j < ARRAY_COUNT; j++)
{
nCurSum += aNum[j];
if(nCurSum > nMaxSum)
{
nMaxSum = nCurSum;
nLeft = i;
nRight = j;
}
}
}
printf("最大子数组和为%d,起始%d,结束至%d\n", nMaxSum, nLeft, nRight);
for(int nIndex = nLeft; nIndex <= nRight; nIndex++)
{
printf("%d ", aNum[nIndex]);
}
printf("\n");
}
int _tmain(int argc, _TCHAR* argv[])
{
srand(GetTickCount());
int aNum[ARRAY_COUNT] = {0};
for(int nIndex = 0; nIndex < ARRAY_COUNT; nIndex++)
{
aNum[nIndex] = rand() % 21 - 10; // 使数组中的元素从-10到10分布
printf("%d ", aNum[nIndex]);
}
printf("\n");
GetMaxSubArray(aNum);
return 0;
}