大家好我们又见面了,这是c++入门2的第一课,话不多说,我们继续学习。
大纲
1.最大连续子段和问题
2.数字三角形问题
3.练习
1.最大连续子段和问题
连续子段{3} 子段和是 3
对于上面的序列连续子段有:
【问题描述】 给定n个整数(可正可负)组成的序列a1,a2,…,an,求该序列的最大的连续子段和。如果所有整数都是负 数,那么定义其最大子段和为0.
连续{3,-4} 子段和是-1
连续{3,-4,2} 子段和是1
连续{3,-4,2,10} 子段和是11
连续{-4} 子段和是-4
连续子段{-4,2} 子段和是-2
连续子段{-4,2,10} 子段和是8
连续子段{2} 子段和是2
连续子段{2,10} 子段和是12
连续子段{10} 子段和是10
【问题描述】 给定n个整数(可正可负)组成的序列a1,a2,…,an,求该序列的最大的连续子段和。如果所有整数都是负 数,那么定义其最大子段和为0.
【解题思路1】暴力枚举 时间复杂度O(n^2)
双重for循环,第一层枚举子段的开头,第二层枚举子段的结尾
【解题思路2】动态规划
定义一个dp数组,定义dp[i]是以a[i]为结尾的最大连续子段和
3 -4 2 10
A 𝑁