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 ...