位運算 海明碼

2021-09-25 23:11:16 字數 880 閱讀 2826

luo

gu

luogu

luog

u1461

1461

1461

給出 n,b 和 d,要求找出 n 個由0或1組成的編碼(1 <= n <= 64),每個編碼有 b 位(1 <= b <= 8),使得兩兩編碼之間至少有 d 個單位的「hamming距離」(1 <= d <= 7)。「hamming距離」是指對於兩個編碼,他們二進位制表示法中的不同二進位制位的數目。

一行,包括 n, b, d。

n 個編碼(用十進位制表示),要排序,十個一行。如果有多解,你的程式要輸出這樣的解:假如把它化為2^b進製數,它的值要最小。

16 7 3
0 7 25 30 42 45 51 52 75 76

82 85 97 102 120 127

請解釋:「必須與其他所有的數相比,hamming距離都符合要求,這個數才正確」

答:如樣例輸出,0和7,0和25,0和……比較都符合海明碼,同樣7和25,7和30,7和……比較也符合要求,以此類推。 就這樣了。 題中至少有d個單位,意思就是大於等於d個單位的都可以。

列舉數字,和之前找到的海明碼匹配,全都成功則為海明碼,否則繼續往下找

#include

#include

using

namespace std;

int n,b,d,h[65]

;bool

check

(int x,

int y)

}return b;

}int

main()

//換行

break;}

}}}

關於海明碼

1.確定冗餘位長度 設原始資料為n,冗餘位為k 則n k 1 2 k 1001011 共7位,則8 k 2 k k 4 冗餘位為4位 2.將原始資料新增校驗位組成碼字 校驗位的設定 2 0 2 1 2 2 2 3 1 2345 6789 1011 校驗校驗1校驗 001校驗 011 3.確定每個校驗...

海明碼與海明距離

一,海明碼 1 傳輸的資料 1101 2 校驗位計算公式 2 k k n 1,n為資料位 在本例中計算的k為3 用p1,p2,p3,表示校驗位,其中 p1,的位數2 0,p2,的位數2 1,p3,的位數2 2則 1 21 2 41 4 2 41 2 4 位數的二進位制 0001 0010 0011 ...

luogu1461海明碼 位運算 暴力

description 給出 n,b 和 d,要求找出 n 個由0或1組成的編碼 1 n 64 每個編碼有 b 位 1 b 8 使得兩兩編碼之間至少有 d 個單位的 hamming距離 1 d 7 hamming距離 是指對於兩個編碼,他們二進位制表示法中的不同二進位制位的數目。0101 0101 ...