本来这道题的题解通道已经关闭了,但是似乎本题的题解几乎都是这么写的:
if(del > 0){ ... } else if(exp(- del / temp) * RAND_MAX < ){ ... }
走到下面的 else 时 del 已经是负数了,此时 eΔTe^{\frac{\Delta}{T}} eTΔ 是一个大于 111 的值,那么必然该式子是不成立的. 我也实际测了多篇题解,把这个 else 语句删掉或者 assert(0) ,都不影响评测结果. 所以本题所有的题解写的其实都是一个爬山算法而不是模拟退火?
else
del
assert(0)