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)。
input
只有一行,為兩個整數n和b。
output
一共bn個行,每行乙個b進製數,表示你所求得的符合條件的排列
sample input
2 2
sample output
10hint
請不要提交此題…
看到請不要提交此題…時,我傻了。
但是,還是要看看有木有人ac。看了果然有,那就可以做了。本想是一道很難的題,看了題解才知道是找規律。
我們列舉第二位的數字的時候從小到大遞增,然而列舉第一位的時候卻要一增一減。這就給了我們啟示
先正著列舉第i位的數字,然後在i%2==0的時候正著列舉第i-1位的數字,在i%2==1的時候倒著列舉第i-1位的數字。
當倒著列舉第i位的數字的時候同理,只不過要反過來而已。
這樣就行了,其實就是找規律的爆搜。**不長。
在送多個資料:
輸入
2 4
輸出
00 10
20 30
31 21
11 01
02 12
22 32
33 23
13 03
#include
#include
int n,m;
int a[110];
void dfs(int k,int t)
printf("\n");
return;
}if(t==1)
}else
}}int main()
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...