提交记录类似 这样 的请进
错误原因:记忆化时,应该标记展开的宏名 str,而不是宏名展开后的结果 map[str]。
具体地,递归展开时,这样的代码是错误的:
vis[map[str]] = 1;
Spread(map[str]);
vis[map[str]] = 0;
而这样的代码是正确的:
vis[str] = 1;
Spread(map[str]);
vis[str] = 0;
放一组 Hack,供自测:
Input:
3
#define a c b
#define c c b
a
Wrong output:
c b
Answer:
c b b