手机号码
这道题目要注意一个点,“是否出现连续\(3\)个相同的数字”这一维是必须的
试想一下,如果我们设\(f[i][j][k][0/1][0/1]\)表示填到第\(i\)位,第\(i\)位数字是\(j\),第\(i\)位前面由\(k\)个数字与\(j\)相同(\(k\)的取值是\(0,1,2\),如果\(k\)取\(2\)的话,那么表示至少有\(2\)个相同),是否出现了\(4/8\)的满足题意的数的总数,那么在推导\(f[i][j][2][0/1][0/1]\)的时候,我们似乎有\(f[i][j][2][0/1][0/1]=f[i-1][j][2][0/1][0/1]+f[i-1][j][1][0/1][0/1]\)(具体的分类讨论就不做了)。但是我们忘记了,如果开头能接到\(3\)个的话,后面的数位完全可以不满足题意(即没有出现连续的\(3\)个),这样我们就会漏掉这一部分
这一点一定要记住,包括蓝书的第一道例题“启示录”也是记下了非魔鬼数的