for i := 0; i < len(q); i++ {
for j := i; j < len(q); j++ {
tmpMax = 0
}
}
//创建一个区间如: 0-0 即取一个元素的时候
// 0-1 即取两个元素的时候
//然后我们在这个区间套里面添加连续加法
for k := i; k <= j; k++ {
tmpMax += q[k]
}
//累加
最后的代码如下:
package main
import "fmt"
func maxSubQSum(q []int) int {
var tmpMax,max int
max = 0
//找到最大的元素
for i := 0; i < len(q); i++ {
for j := i; j < len(q); j++ {
tmpMax = 0
for k := i; k <= j; k++ {
tmpMax += q[k]
if tmpMax > max {
max = tmpMax
}
}
}
}
return max
}
func main() {
q := []int {1,3,-5,6,-3}
fmt.Println(maxSubQSum(q))
}
方法2:
i=0开始,j=0,1,2,3,4,5····累加
i=1开始,j=1,2,3,4,5,6····累加
代码如下:
package main
import "fmt"
func maxSubQSum(q []int) int {
var tmpMax,max int
max = 0
//找到最大的元素
for i := 0; i < len(q); i++ {
tmpMax = 0
for j := i; j < len(q); j++ {
tmpMax += q[j]
if tmpMax > max {
max = tmpMax
}
}
}
return max
}
func main() {
q := []int {1,3,-5,6,-3,12,3,4,5,6,7,8,9,-12,-1,3,45}
fmt.Println(maxSubQSum(q))
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。