




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1判斷唯一可譯碼的程序#include<stdio.h>#include<string.h>charc[100][50];〃碼字集合charf[300][50]〃后綴集合intN,sum=0;//N為輸入碼字的個數,sum為尾隨后綴集合中碼字的個數intflag〃判斷是否唯一可譯標志位voidpatterson(charcQ,chard[])//檢測尾隨后綴(inti,j,k;for(i=0;;i++)(if(C[i]=='\0,&&d[i]=='\01)//2字符串一樣,跳出break;if(c[i]==1\0') 〃"匕,長將d的尾隨后綴放入f中(for(j=i;dD]!='\0-;j++)f[sum]D-i]二d[j];f[sum][j-i]='\0';for(k=0;k<sum;k++)(if(strcmp(f[sum],f[k])==0)/*查看當前生成的尾隨后綴在f集合中是否存在*/(sum--;break;})sum++;break;)if(d[i]==1\01) //c比d長,將c的尾隨后綴放入f中(for(j=i;cD]!='\O';j++)f[sum]D-i]=c[j];f[sum][j-i]='\0';for(k=0;k<sum;k++)(if(strcmp(f[sum],f[k])==0) /*查看當前生成的尾隨后綴在f集合中是否存在*/sum--;break;)sum++;break;)if(cp]!=d[i])〃字符不一樣了也退出break;})/?主函數?/mainO(inti.j;printf(“請輸入碼字的個數(小于100):)〃輸入碼得個數scanf("%d",&N);while(N>100)(printf(”輸入碼字個數過大,請輸入小于100的數\n”);printf("請輸入碼字的個數(小于100):");scanf("%d",&N);}flag=0;printf(”請分別輸入碼字(每個碼字長度小于50個字符)for(i=0;i<N;i++)(scanf("%s",&c[i]);}for(i=0;i<N-1;i++)〃判斷如果碼本身是否重復for0=i+l;j<N;j++)(if(strcmp(c[i],cOB==0)(flag=1;break;))if(flag二二1)〃如果碼本身有重復,就可以斷定它不是唯一可譯碼(printf("這不是唯一可譯碼。\n");}else(for(i=0;i<N-1;i++) /*此處是根據原始編碼生成的尾隨后綴集合s[l]放入f中?/for(j=i+1;j<N;j++)patterson(c[i],c[j]);)for(i=0;;i++)〃根據原始碼與s[i]生成s[i+□也放入f[i](ints=0;for(i=0;j<N;j++) /*判斷s[i+l]中的字符串是否與s[i]中一樣,重復的則不再添加”(if(i==sum)(s=1;break;}elsepatterson(f[i],c[j]);)if(s二二1)break;)for(i=0;i<sum;i++) /*判斷p里的字符串是否與s中重復,重復則不是唯一的*/(for(j=0;j<N;j++)(if(strcmp(f[i],c[j])==0)(flag=1;break;}))if(flag==1)(printf(”這不是唯一可譯碼。\n");)elseprintf(“這是唯一可譯碼。\n");}printfC尾隨后綴集合為:”);for(i=0;i<=sum;i++)printf("\n%s",f[i]);2香農編碼的程序#include<stdio.h>#include<math.h>#defineG20floata[G]={0},P[G]={0},tmp=0,m[G]={0},k=0,H=0;intK[G]={0},i,j,N,s[G][G];voidmain()(loop:printf(〃請輸入信源符號個數N:");scanf(級d〃,&N);for(i=0;i<N;i++)(scanf ;tmp+=a[i];)if(tmp<0.9999||tmp>l.0001){printf(〃輸入的數據不符合要求,請重新輸入\n〃);tmp=0;gotoloop;)else(for(i=0;i<N-l;i++) 〃從大到小進行排序for(j=i+l;j<N;j++)(if(a[i]<a[j])tmp=a[i];))for(i=l;i<N;i++)〃求累加概率for(j=0;j<i;j++)for(i=0;i<N;i++)(m[i]=-logl0(a[i])/logl0(2.0);〃求出Togp(ai)并保存在數組m里for(j=0;j<10;j++)〃對存在數組m里的數進行取整(取不小于這個數的最小整數)(if(m[i]==j)(break;)if(m[i] <j+1)(break;)))for(i=0;i<N;i++)〃求碼字tmp=P[i];tmp=tmp*2;if(tmp<l)s[i][j]=O;else(tmp=tmp-l;)))for(i=0;i<N;i++)(〃求信源焰k+=a[i]*K[i];〃求平均碼長)printf(〃信源消息符號ai符號概率p(ai)累加概率Pi-logp(ai)碼字長度Ki碼字\n〃);for(i=0;i<N;i++)(printfCa%d%-4.2f%-4.2f%-4.2f %d〃,i+1,a[i],P[i],m[i],K[i]);for(j
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 愛心美食捐贈活動方案
- 熱烈團建活動策劃方案
- 環保節水講座活動方案
- 獨舞比賽活動方案
- 班級中秋節活動方案
- 特色綠地活動方案
- 物業中考助力活動方案
- 特色朗誦活動方案
- 海南速騰活動方案
- 流動書箱活動方案
- 知行合一-王陽明傳奇課件
- 鍋爐澆注料施工方案
- 葛的栽培技術
- 《綠色建筑概論》整套教學課件
- 山東中醫藥大學2020-2021學年內科護理學試題及答案2
- 2021年中國美術學院輔導員招聘考試題庫及答案解析
- 初中道德與法治學科教學經驗交流
- DB34-T 4289-2022城鎮檢查井蓋安裝管理技術規程
- 年產3萬噸硫酸鉀,1.8萬噸副產工業鹽項目建設可行性研究報告
- 貴州省建筑與裝飾工程計價定額(2023版)
- 發證機關所在地區代碼表
評論
0/150
提交評論