真是好久好久都没写这个了,现在要重新开始学习,开始关于算法的学习,计算机主要就是运算各种问题,做计算编程的人就是利用计算机进行各种运算,也就是说,做一些计算机的算法,当然这个算法不是数学的算法。
这次写的是最大连续子数组问题。给定一个数组A[0,...,n-1],求A的连续子数组,使得该子数组的和最大。例如:
数组:1,-5,5,6,-4,7,-20,8
最大连续子数组为:5,6,-4,7
1. 首先这个可以直接用暴力法,将其求解出,所为暴力,就是遍历所有可能的值,直接求解:
我们需要3个循环:最外层大循环为起始元素的循环,0≤i<n
中间循环为结束元素的循环,i≤j<n
最外层的循环为从i到j的求和遍历,i≤k≤j
所以其时间复杂度为O(),代码如下所示:
int MaxSubArray(int*A, int n,int *subA)
{
int maxSum = A[0];
int currSum;
for (int i = 0; i<n; i++)
{
for (int j = i; j<n; j++)
{
currSum = 0;
for