SCOI2005 超級格雷碼

2021-07-22 03:12:05 字數 1151 閱讀 9955

著名的格雷碼是指2n個不同n位二進位制數(即0~2n-1,不足n位在前補零)的乙個排列,這個排列滿足相鄰的兩個二進位制數的n位數字中最多只有乙個數字不同(例如003和001就有乙個數字不同,而003和030有兩個數字不同,不符合條件)。例如n=2時,(00,01,11,10)就是乙個滿足條件的格雷碼。

所謂超級格雷碼就是指bn個不同的n位b進製數的排列滿足上面的條件。

任務:給出n和b(2≤b≤36, 1≤bn≤65535),求乙個滿足條件的格雷碼。對於大於9的數字用a~z表示(10~35)。

2 2
00

0111

10

每個數字要倒著輸出,然後就是正常的生成gray碼即可。

生成就類似與一直給乙個數+1,然後進製的時候比較特殊,要一位一位退。

還是介紹一下gray碼:

gray碼是一種數字編碼方式,可以使相鄰的兩個數之間只有一位的差別。

以資料為例:

構造格雷碼的方式很簡單,首先列出

0 1

以底部為水平軸在軸下方寫出軸上方的反射:

0 1

1

0

並在軸上方數字左邊都加0,軸下方數字都加1:

00

01

11

10

如此類推,還可以得到:

000

001

011

010

110

111

101

100

很厲害吧,這一題,稍微改一改就好了。

#include

#include

using

namespace

std;

int n,m;

int a[21];

void hh(int x)

int main()

printf("\n");

}return

0;}

SCOI2005 超級格雷碼

提交 bzoj1081 題目 這道題並不是很難,題意易懂,用搜尋,是可以知道的 但是,十分麻煩 然而一位神同學yzh通過打表來發現了這道題的規律 十分神奇耶 假設是n 2 b 3 答案是 00 10 20 21 11 01 02 12 22 分下組 00 10 20 21 11 01 02 12 2...

bzoj1081 SCOI2005 超級格雷碼

description 著名的格雷碼是指2n個不同n位二進位制數 即0 2n 1,不足n位在前補零 的乙個排列,這個排列滿足相鄰的兩 個二進位制數的n位數字中最多只有乙個數字不同 例如003和001就有乙個數字不同,而003和030有兩個數字不同,不符合條件 例如n 2時,00,01,11,10 就...

BZOJ1081 SCOI2005 超級格雷碼

description 著名的格雷碼是指2n個不同n位二進位制數 即0 2n 1,不足n位在前補零 的乙個排列,這個排列滿足相鄰的兩個二進位制數的n位數字中最多只有乙個數字不同 例如003和001就有乙個數字不同,而003和030有兩個數字不同,不符合條件 例如n 2時,00,01,11,10 就是...