题目链接:uva 1252
题意: 有n个长度为m的二进制串,每个都是不同的。 为了把所有字符串区分开,你可以询问,每次可以问某位上是0还是1。 问最少提问次数,可以把所有字符串区分开来。
思路来源于:点击打开链接
思路: m很小,可以考虑状态压缩。 dp[s1][s2]表示询问的状态为s1时,此时能猜到状态包含s2时最小需要的步数。 当询问的几位=s2的二进制串小于2时就能区分出来了,dp[s1][s2]=0; 不能区分则再询问一次,s1|=(1<
代码:
#include
#include
#include
#include
#include
#include
#include
|