题目解析
我的解题思路是:
暴力枚举所有可能的谜底,即0000~9999,然后用每一个谜底去过输入的猜测。
我们假设某个谜底 和 输入的猜测数字 产生的猜测提示是real_result,而输入中猜测数字对应的猜测提示是expect_result,如果real_result == expect_result,那么说明说明当前谜底符合当前猜测数字的要求。
如果某个谜底,可以符合所有猜测数字的要求,那么该谜底就是一个可用谜底。
如果,暴力枚举出来的所有谜底中,只有一个可用谜底,那么该谜底就是题解。否则本题无解,返回NA。
优化思路:
上面算法可能会超时,原因就是我们需要验证0000~9999这一万个可能的谜底,而每个可能的谜底有需要验证最多100个输入的猜测数字。
因此,我们可以做一些剪枝优化,比如题目用例输入中有一行:
4901 0A0B
这行的含义其实是:真正的谜底的四个数字不能取4,9,0,1这些。
再比如:
5716 0A1B
7842 0A1B
4901 0A0B