Gravatar
llbc1234
积分:20
提交:7 / 20

题目大意

按照格雷码的生成方式,输出 n 位格雷码的第 k 号二进制串。(从 0 开始编号)

思路

填完第 k 个 n 位格雷码的第 1 位后,把它转化成某一个 n−1 位格雷码继续填这个 n−1 位格雷码的第 1 位,以此类推。

如何确定转化成第几个 n−1 位格雷码:

当 k<2n−1,因为这个 n 位格雷码的前 2n−1 个二进制串的后 n−1 位是由 n−1 位格雷码正序排列而成的,所以 k 保持不变。

当 k≥2n−1,因为这个 n 位格雷码的后 2n−1 个二进制串的后 n−1 位是由 n−1 位格雷码逆序排列而成的,所以 k 要先减去 2n−1,变成 n−1 位格雷码,再翻转才能保证是逆序的,即 k=r-k+l



题目3289  [CSP 2019S]格雷码 AAAAAAAAAAAAAAAAAAAA      4      3 条 评论
2025-09-25 21:06:01