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))
}

天赢金创
338 声望21 粉丝

天赢金创,天赢金创,天赢金创,天赢金创,天赢金创,天赢金创天赢金创,天赢金创


引用和评论

0 条评论