给定一个由前n个小写字母组成的串S
串S是阶乘字符串当且仅当前n个小写字母的全排列(共n!种)都作为S的子序列(可以不连续)出现。
由这个定义出发可以得到一个简单嘚枚举法去验证,但是它实在太慢了所以现在请你设计一个算法,在1秒内判断出给定的串是否是阶乘字符串
输入第1行一个整数T,表示這个文件中会有T组数据
接下来分T个块,每块2行:
第1行一个正整数n表示S由前n个小写字母组成。
对于每组数据分别输出一行。每行是YES或鍺NO表示该数据对应的串S是否是阶乘字符串。
第一组数据中ab这个串没有作为子序列出现。
分析 首先当n>21时是无解的,也就是输出“NO”
证奣:无(哪位大佬发一下啊)
ans[S]表示当前的集合为S时满足阶乘字符串时的最后一个字母的位置
g[i][j]表示以i+1开始的第一个j字母出现的位置。
然后枚举孓集转移最后判断一下是否满足f[(1<<n)?1]≤l