日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二十一、前缀码判定

發(fā)布時間:2025/3/21 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二十一、前缀码判定 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

二十一、前綴碼判定

文章目錄

  • 二十一、前綴碼判定
    • 題目描述
    • 解題思路
    • 上機代碼

題目描述

前綴碼:任何一個字符的編碼都不是同一字符集中另一個字符的編碼的前綴。

請編寫一個程序,判斷輸入的n個由1和0組成的編碼是否為前綴碼。如果這n個編碼是前綴碼,則輸出"YES”;否則輸出第一個與前面編碼發(fā)生矛盾的編碼。

輸入:
第1行為n(表示下面有n行編碼)
第2~n+1行為n個由0或1組成的編碼

**輸出:**判斷結果

例如,如果輸入:

5

00

01

10

110

111

每一個字符均不是其他字符編碼的前綴,所以,輸出:YES

再如,如果輸入:

5

00

01

10

110

11

編碼11與前面的編碼110的前綴,所以,輸出:11

測試輸入期待的輸出時間限制內存限制額外進程
測試用例 15
00
01
10
110
111
YES1秒64M0
測試用例 25
00
01
10
110
11
111秒64M0
測試用例 35
00
01
10
11
111
1111秒64M0
測試用例 45
111
110
10
01
00
YES1秒64M0
測試用例 58
00
010
0110
0111
10
110
1110
1111
YES1秒64M0
測試用例 68
00
010
0110
0111
10
11
1110
111
11101秒64M0

解題思路

所謂前綴碼的判定,本質上是二叉樹的建樹問題。令二叉樹的左子樹都代表1,遇到 1 都向左走;右子樹都代表0,遇到 0 都向右走。

對于全新的沒有前綴的字符編碼,則二叉樹中建立對應分支,分支除了最后一個結點外的所有結點值都為0,僅最后一個結點值為1。

字符編碼是前綴碼的話,如果在分支的行進過程中碰到值為 1 的結點,則當前字符編碼存在前綴碼;如果編碼遍歷完成,但是最后一個字符沒有新建結點,則當前字符編碼是別人的前綴碼。

對于前綴碼,我們用一個 flag 進行標記。當 flag 為 1 時表示存在前綴碼,輸出第一個前綴碼 prefix。如果全部判斷完成,flag 仍為0,則沒有前綴碼。

上機代碼

#include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<queue> #include<algorithm> using namespace std; typedef struct NODE {int data;struct NODE *lchild;struct NODE *rchild; }node,*Tree;int main() {int n = 0;char str[100010], prefix[100010];int flag = 0;Tree bit, T;bit = (Tree)malloc(sizeof(node));//初始化bit->data = 0;bit->lchild = NULL;bit->rchild = NULL;cin >> n;while(n--){memset(str, 0, sizeof(str));cin >> str;int len = strlen(str);if (flag == 1) //存在前綴碼后面都不用判斷了,讀取編碼后直接跳出循環(huán)continue;strcpy(prefix, str);//保存第一個前綴碼T = bit;//每次變回根節(jié)點初始化狀態(tài)for (int i = 0; i < len; i++){if (str[i] == '1') //1向左走{if (T->lchild == NULL)//左子樹新建結點{T->lchild = (Tree)malloc(sizeof(node));T = T->lchild;T->lchild = NULL;T->rchild = NULL;if (i == len - 1)T->data = 1;elseT->data = 0;}else{if (T->lchild->data == 1 || i == len - 1)//存在前綴碼{flag = 1;break;}elseT = T->lchild;}}else //0向右走{if (T->rchild == NULL)//右子樹新建結點{T->rchild = (Tree)malloc(sizeof(node));T = T->rchild;T->lchild = NULL;T->rchild = NULL;if (i == len - 1)T->data = 1;elseT->data = 0;}else{if (T->rchild->data == 1 || i == len - 1){flag = 1;break;}elseT = T->rchild;}}}}if (flag == 0)//沒有前綴碼cout << "YES" << endl;elsecout << prefix << endl;//system("pause");return 0; }

總結

以上是生活随笔為你收集整理的二十一、前缀码判定的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 辟里啪啦国语版免费观看 | 日韩精品一区二区三区四区 | 日日撸视频 | 国产嫩草av | 日韩精品中文字幕一区二区三区 | 九九视频在线 | 国产三级91 | 精品熟女一区二区 | 成人午夜av| 国产sm主人调教女m视频 | 91精品日韩 | 高清视频在线免费观看 | 日韩网站免费 | 蜜桃视频中文字幕 | 久久天堂精品 | 啪啪导航 | 国产美女啪啪 | 日韩中文字幕在线播放 | 日韩区在线观看 | 日韩亚洲欧美精品 | 亚洲综合站| 欧美在线观看视频一区二区 | 爱就操 | 一本之道高清无码视频 | 一区二区在线免费视频 | 成人午夜视频精品一区 | 日韩无码精品一区二区三区 | 欧美日韩一区二区在线视频 | 久久久久亚洲精品中文字幕 | 无码人妻精品一区二区三区不卡 | 国产一级片黄色 | a级片在线播放 | 中文字幕永久 | 午夜爱爱网| 欧美激情在线播放 | 六月色丁香 | 亚洲欧美强伦一区二区 | av片网址 | 国产精品视频麻豆 | 日本精品一区视频 | 国产免费成人在线视频 | 红桃视频成人在线 | 精品三级网站 | 超碰在线公开 | 在线免费国产视频 | 成人综合激情 | 国产一级二级毛片 | 亚洲第一视频区 | 亚洲精品 日韩无码 | 波多野结衣电车 | 午夜高潮视频 | 天天躁日日躁狠狠躁av麻豆 | 免费视频亚洲 | 亚洲高潮av | 国产又粗又黄视频 | 中文字幕亚洲图片 | 26uuu国产 | 亚洲精品一区二区三区区别 | 久久青| 欧美三日本三级少妇三级99观看视频 | 91久久综合亚洲鲁鲁五月天 | 女仆乖h调教跪趴1v1 | 午夜男人网 | 天堂中文字幕在线 | 99人妻少妇精品视频一区 | 亚洲欧洲日本精品 | 亚洲av永久无码精品 | 蜜桃视频在线观看一区二区 | 国产又粗又猛视频免费 | 精品美女久久久久 | 国外成人免费视频 | 一本加勒比hezyo黑人 | 亚洲福利在线视频 | 大奶子情人 | 久久国产精品精品国产 | 亚洲激情久久 | 免费成人结看片 | 国产剧情av引诱维修工 | 国产日韩专区 | 欧美乱轮视频 | 免费观看成人鲁鲁鲁鲁鲁视频 | 天天干天天操天天拍 | 四虎在线精品 | 中文字幕一区二区三区视频 | 日韩免费高清视频 | 污污的网站在线观看 | 神马午夜不卡 | 少妇人妻偷人精品无码视频新浪 | 催眠美妇肉奴系统 | 夜夜操狠狠操 | 精品国产中文字幕 | 自拍偷拍国产视频 | 亚洲一区视频网站 | 妺妺窝人体色777777 | www.日日日 | 德国性猛交xxxxhd | 国产av人人夜夜澡人人爽 | 国产精品福利一区二区 | 日韩国产在线一区 |