時間限制1000 ms記憶體限制65536 kb
針對給定h,計算群碼編碼函式eh,並計算給定字的碼字。
第一行輸入兩個整數m,n;(m < n ,n < 10)
第二行輸入m × (n - m) 個0或1,也就是矩陣h的上半部分,下半部分單位矩陣自行生成;
第三行輸入m位元的字;
第一行輸出該編碼函式能檢測到的錯誤位數;
第二行輸出給定字的碼字;
2 5
1 1 0 0 1 1
1 1
2
11101
能檢測到的錯誤位數,就是0~$2^m-1$生成的編碼和0的非零距離的最小值-1。
編碼就直接乘上[i|h],有個地方害我一直wa的,就是int k=0; if(g&(1<
/*task:構造群碼
lang:c++
url:
*/#include
#include
#include
#include
#define n 30
#define ll long long
using
namespace
std;
intn,m,h[n][n];
intbm[n],bn[n];
//計算n長度的a的權
int weight(int *a)
//計算最多檢測的錯誤
intgetk()
int w=weight(bn);
if(w)ans=min(ans,weight(bn));
}return ans-1;}
intmain()
printf(
"%d\n
",getk());
for(int i=1;i<=m;i++)
scanf("%d
",&bm[i]);
//將bm編碼成bn
for(int i=1;i<=n;i++)
for(int i=1;i<=n;i++)printf("%d"
,bn[i]);
return0;
}
時間限制1000 ms記憶體限制65536 kb
給定群碼(m,n)的編碼函式e的h,採用極大似然法進行解碼 (n<=20)
第一行輸入兩個整數m,n;
第二行輸入m × (n - m) 個0或1,也就是矩陣h的上半部分,下半部分單位矩陣自行生成;
第三行輸入n位元的字;
第二行:採用極大似然法對給定的字解碼後的字
3 6
1 1 0 1 0 1 0 1 1
001110
1
011
在所有編碼和0的距離時,把編出來的碼記錄起來,然後解碼時遍歷所有編碼,找到距離最近的,就是答案了。
/*task:極大似然法解碼
lang:c++
url:
*/#include
#include
#include
#include
#define n 50
#define ll long long
using
namespace
std;
intn,m,h[n][n];
intbm[n];
ll bn[
2000
][n];
inttmp[n];
//計算n長度的a的權
intweight(ll a[n])
//計算最多檢測的錯誤,同時計算得到所有的對應編碼
intgetk()
int w=weight(bn[g]);
if(w)ans=min(ans,w);
}return (ans-1)/2;}
intgetn()
if(mi>dif)
}return
ans;
}int
main()
printf(
"%d\n
",getk());
for(int i=1;i<=n;i++)
int ans=getn();
for(int i=m-1;i>=0;i--)
printf("%d
",(1
<1:0
);
return0;
}
離散數學 筆記
1.復合命題的真值只取決於各原子命題的真值,而與它們的內容 含義無關,與原子命題之間是否有關係無關。2.命題公式 1 重言式 2 矛盾式 3 可滿足式 1.重言式 給定一命題公式,若無論對分量作怎樣的指派,其對應的真值永為真,則稱該命題為重言式或永真式 2.給定一命題公式,若無論對分量作怎樣的指派,...
《離散數學》關係
為什麼要研究乙個關係的演算法?我總是在想這個 難道是現實世界關係的模型對於我們來說,都是數學中研究的關係 關係把世界連線為了乙個巨大的網 一,關係的定義以及性質 從數學的角度來說,關係是笛卡兒的子集,就是乙個二維表,還可以是乙個矩陣,乙個有向圖。關係有一些性質,自反 a,b有相同的父母 對稱 a,b...
離散數學 樹
本人是新人,對樹的概念還是不太清楚,故寫個學習概念的文章,來幫助自己學習樹這一資料結構。定義1.樹是沒有簡單迴路的連通無向圖。定理1.乙個無向圖是樹當且僅當在它的每對頂點間存在唯一簡單迴路。定義2.有根樹是指乙個頂點 指所有節點 作為根並且每條邊的方向都離開根的樹。關於孩子,父母與深度和高度什麼的,...