将数组拆分成斐波那契数
func splitIntoFibonacci(str string) []int { n=len(str) ans=make([]int,0) dfs(str,0, 0, 0) return ans } var ans []int var n int func dfs(str string,index, sum, prev int) bool { if index == n { return len(ans) >= 3 } cur := 0 for i := index; i < n; i++ { // 每个块的数字一定不要以零开头,除非这个块是数字 0 本身 if i > index && str[index] == '0' { break } cur = cur*10 + int(str[i]-'0') // 拆出的整数要符合 32 位有符号整数类型 if cur > math.MaxInt32 { break } if len(ans) >= 2 { if cur < sum { // f[i+2]<f[i]+f[i+1] continue } if cur > sum { break } } ans = append(ans, cur)// cur 符合要求,加入序列 F if dfs(str,i+1, prev+cur, cur) {//f[3]=f[1]+f[2] return true } ans = ans[:len(ans)-1] } return false }
等风起的那一天,我已准备好一切