我正在解决这个 Project Euler 问题。首先我尝试了暴力破解,花了 0.5 秒,然后我尝试了动态编程来利用记忆化,期望有巨大的改进,但令我惊讶的是结果是 0.36 秒。
经过一番谷歌搜索后,我发现您不能在函数(find_collatz_len)中使用指向外部地图数据(备忘录)的指针。因此,每次运行下面的函数时,它都会复制整个字典。这听起来像是对处理器能力的巨大浪费。
我的问题是有什么解决方法,以便我可以使用指向函数外部映射的指针来避免复制。
这是我的丑陋代码:
package main
//project euler 014 - longest collatz sequence
import (
"fmt"
"time"
)
func find_collatz_len(n int, memo map[int]int) int {
counter := 1
initital_value := n
for n != 1 {
counter++
if n < initital_value {
counter = counter + memo[n]
break
}
if n%2 == 0 {
n = int(float64(n)/2)
} else {
n = n*3+1
}
}
memo[initital_value] = counter
return counter
} …
Run Code Online (Sandbox Code Playgroud) 为什么下面的代码在 Python中返回FALSE?不应该是TRUE,因为 b 已经包含“T”。
a = ["T"]
b = ["H", "T"]
a in b
False
Run Code Online (Sandbox Code Playgroud)