算法第三章上机实践报告

最大子段和

算法第三章上机实践报告_第1张图片

 

 算法描述

用整数b暂时存他们的连续子段和,如果这个子段和大于已知的子段和,就将已知的子段和改为b,若b的累计值小于0,则让b等于当前值,前面的值加起来也不会比已知的最大的子段和大

 1 #include
 2 using namespace std;
 3 int n;
 4 int a[10005];
 5 
 6 int main(){
 7     cin>>n;
 8     for(int i=1;i<=n;i++){
 9         cin>>a[i];
10     }
11     
12     int sum=0,b=0;
13     for(int i=1;i<=n;i++){
14         if(b>0) b+=a[i];
15         else b=a[i];
16         if(b>sum) sum=b;
17     }
18     cout<endl;
19     
20     
21     return 0;
22 } 

时间复杂度为O(n)

空间复杂度也为O(n)

心得:

在课堂上自己想了递归的算法,瞎打,结果没过

然后发现课本上有一个更优的算法,果断学习了,

 

 

动态规划,果然还是要找到一个最优解的子结构;

最小编辑距离

 

 搞不太懂,课后也不懂,看了这个比较清楚的博客,似懂非懂,懂了再完善这个博客吧

https://blog.csdn.net/baodream/article/details/80417695

 

你可能感兴趣的:(算法第三章上机实践报告)