最大连续子序列求和(算法)亲测完整C语言代码
虽然楼主是一个Java程序员,但是最近在学习的时候,遇到一个问题:最大连续子序列求和。
当时这个问题是个很好的问题,如果理解透彻了,就会很easy。实现的时间复杂度,也很多,非常适合学习研究。
一、引入讲解文章
在知乎上有一篇文章讲解了一个理解思路是非常不错的。
建议用笔和纸写一写画一画,光靠看肯定会很懵。
最大连续子序列求和的一种理解思路
二、楼主亲测的几种实现方式。
今天后续楼主会把自己的几种实现方式完整的代码贴出来。
所有算法均已亲测通过,如有疑问,欢迎指出。
1、最慢的一种算法:时间复杂度为T(N)=O(N^3)。
#include <stdio.h>
/*
* 时间复杂度:T(N) = O(N^3)
* 输入序列{-2,11,-4,13,-5,-2}
* 最大子序列:{11,-4,13}和为20
*
* 这里首先讲解一下for循环的执行顺序
* 1、首先int i = 0;
* 2、然后判断i < 2成立
* 3、进入循环体打印hello world
* 4、打印完后i + 1=1
*
* 5、判断i < 2 成立
* 6、进入循环体打印hello world
* 7、打印完后i + 1 = 2
*
* 8、判断i < 2 不成立
* 9、跳出此循环
*
* 至此