BZOJ1081 SCOI2005 超級格雷碼

2021-07-22 07:44:36 字數 998 閱讀 9519

description

著名的格雷碼是指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)。

sample input

2 2
sample output

00

01 11

10

其實這道題是有規律的

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

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

還是介紹一下gray碼:

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

以資料為例:

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

0 1

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

0 1

1 0

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

00 01

11 10

引用至ljh_koqi

附**:

#include

#include

using namespace std;

int a[1100];

int main()

else

}printf("\n");

}return

0;}

bzoj1081 SCOI2005 超級格雷碼

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

bzoj1081 SCOI2005 超級格雷碼

傳送門 構造.首先構造一組2 4的解 00 01 02 03 13 12 11 10 20 21 22 23 33 32 31 30 發現了什麼?明知故問 我們列舉第二位的數字的時候從小到大遞增,然而列舉第一位的時候卻要一增一減。這就給了我們啟示 先正著列舉第i位的數字,然後在i 2 0的時候正著列...

BZOJ 1079 SCOI2008 著色方案

題目 分析 一看就覺得是dp或者直接排列組合公式或者容斥?我就只想到dp的,我們用dp i j 表示前i種顏色,排列出有j對相鄰一樣顏色的方案數。當出現乙個新的顏色時,我們把這個顏色插板法插進去,我們要列舉插入的方式,可能插到相鄰顏色一樣的中間,或者不是,然後進行狀態轉移.具體看 include i...