这题有个坑点, 比如说要求最小值, 一般把不合法的状态设为无穷大, 这样更新的时候, 习惯性写成下面这样
ans = std::min(ans, dfs(...) * sum)
如果dfs返回不合法的状态, 但是此时sum = 0, 那么dfs(...) * sum 就等于0了, 但是我们合法的最小值是大于0. 测试数据里有这样的数据, 这样会WA在第5组数据里.
上面那种把不合法的状态设为无穷大, 更新最小值时, 只有当sum 始终大于 0时才可以.
所以在更新时, 我们应该先检查状态是否合法, 对于不合法的状态不要更新.