funcFindMaxSubArr(A []int) (int, int, int) { var max = A[0] var current = 0 var left, right = 0, 0 var LengthA = len(A) for i := 0; i < LengthA; i++ { current = A[i] if current > max { // 判断初始的单元是否是最大数组,第一次写的时候忘记加了,导致有些排列会出问题 max = current left, right = i, i } for k := i + 1; k < LengthA; k++ { current += A[k] if current > max { max = current left, right = i, k } } }
funcFindMaxSubArr(A []int) (int, int, int) { max := A[0] left, right := 0, 0
leftToNow := max tempLeft := left for i := 1; i < len(A); i++ { leftToNow = leftToNow + A[i] if leftToNow > max && leftToNow > A[i] { max = leftToNow left = tempLeft right = i } elseif A[i] > leftToNow && A[i] > max { max = A[i] leftToNow = max left, right = i, i tempLeft = left } }
return left, right, max }
随机测试发现 类似序列 [-8 -4 6 -8 5 7 -5 6 -1 -7] 并不能正常生成最大子数组。 问题在于左界只会因为之前的子数组小于当前单元时会右移重置,会导致计算的最大子数组中包含了左侧连续的和为负的子数组,导致整体的和变小。 解决这个问题,我们需要知道。 x < 0, x + P <= P 我们需要动态的舍去已经计算出的负数子数组。当前子数组的和已经小于零,那么不论下一个单元是正是负,都会大于或者等于当前的子数组的合。
funcFindMaxSubArr(A []int) (int, int, int) { max := A[0] left, right := 0, 0
leftToNow := max tempLeft := left for i := 1; i < len(A); i++ { leftToNow = leftToNow + A[i] if leftToNow > max && leftToNow >= A[i] { max = leftToNow left = tempLeft right = i } elseif A[i] > leftToNow && A[i] > max { max = A[i] leftToNow = max left, right = i, i tempLeft = left } elseif leftToNow < 0 { leftToNow = 0// 循环开始时会被初始化为 A[i+1] 的值,不会产生负面影响 tempLeft = i + 1 } }
return left, right, max }
实际上 如果采用
1
} elseif A[i] >= leftToNow && A[i] > max {
tempLeft = i + 1 也是可以省略的
Gepostet vor Aktualisiert vor PHPa minute lesen (Über 220 Wörter)
# This is the network config written by 'subiquity' network: ethernets: ens33: dhcp4: false addresses: [192.168.111.10/24] gateway4: 192.168.111.2 nameservers: addresses: [192.168.111.2] search: [] version: 2
FastCGI sent in stderr: "PHP message: PHP Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0" while reading response header from upstream
到此问题就很清楚了,报错的表单中有很多 checkbox 导致处于表单末尾的 _method 因为默认最大提交限制为 1000 的问题无法被系统接收到,从而导致系统无法根据 _method 项来用 PUT 方式处理 POST 请求。