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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

7-43 字符串关键字的散列映射 (25 分)(思路+详解+不懂的兄弟们来呀)兄弟们我干了5个小时,一个一个测试点过的

發布時間:2023/12/4 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7-43 字符串关键字的散列映射 (25 分)(思路+详解+不懂的兄弟们来呀)兄弟们我干了5个小时,一个一个测试点过的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:題目

7-43 字符串關鍵字的散列映射 (25 分)
給定一系列由大寫英文字母組成的字符串關鍵字和素數P,用移位法定義的散列函數H(Key)將關鍵字Key中的最后3個字符映射為整數,每個字符占5位;再用除留余數法將整數映射到長度為P的散列表中。例如將字符串AZDEG插入長度為1009的散列表中,我們首先將26個大寫英文字母順序映射到整數0~25;再通過移位將其映射為3×32
2
+4×32+6=3206;然后根據表長得到3206,即是該字符串的散列映射位置。

發生沖突時請用平方探測法解決。

輸入格式:
輸入第一行首先給出兩個正整數N(≤500)和P(≥2N的最小素數),分別為待插入的關鍵字總數、以及散列表的長度。第二行給出N個字符串關鍵字,每個長度不超過8位,其間以空格分隔。

輸出格式:
在一行內輸出每個字符串關鍵字在散列表中的位置。數字間以空格分隔,但行末尾不得有多余空格。

輸入樣例1:

4 11 HELLO ANNK ZOE LOLI

輸出樣例1:

3 10 4 0

輸入樣例2:

6 11 LLO ANNA NNK ZOJ INNK AAA

輸出樣例2:

3 0 10 9 6 1

二:思路

這道題解決沖突的發法,是平方探測法,下方 有圖片介紹 ;
測試點2:還有的是這個處理重復元素時,不能直接在while循環的判斷條件內直接判斷;因為是取后3個字母,后三個字母會出現重復 的,但他們的總體字符串可能不一樣,所以要單獨處理。
測試點3:需要考慮那個余數為負數的情況
測試點4:在while循環內需要按這種形式寫,我還寫了一個其他的碼,測試了好多數據都正確,就是最后一個測試點,過不去,我換了一種寫法,然后就過去了。
還有就是我在賦初值的時候用的是30000,沒有用0,因為比如A,AA,AAA,像這樣的數如果賦初值為0 的話那么他們的輸出結果都為0
但是實際上應為 0 1 2;

三:介紹平方探測法(也叫二次探測法)

四:上碼

#include<bits/stdc++.h> using namespace std;int strLength( string str ){int sum = 0;if( str.length() >= 3 ){int temp = str.length() - 3; string cut_str = str.substr(temp); //截取字符串 int count = 2;for( int j = 0; j < cut_str.length(); j++ ){int num = (cut_str[j] - 65)*pow(32,count);sum += num;count--;} }else if( str.length() == 2 ){sum = (str[0] - 65) * 32 + (str[1] - 65); }else if( str.length() == 1 ){sum = str[0] - 65;}else if( str.length() == 0 ){sum = 0;}return sum;}int main(){int N,P;int array[1050];vector<string>v(1050);vector<string>v1(1050);int m = -1;cin >> N >> P;for( int i = 0; i < P; i++){ //想要賦值除0以外的數得單個 拿出來寫 array[i] = 30000;}for( int i = 0; i < N; i++ ){string str;int remainder;cin >> str;for( int j = 0; j < v.size() && i > 0; j++ ){//測試點2有重復的if(v[j] == str){m = j;}}v.push_back(str);if( m != -1 ){for( int k = 0; k < P; k++ ){if( v[m] == v1[k]){remainder = k; }}m = -1; }else{int sum = strLength(str);remainder = sum % P;int d = 1; int cnt = 1;//用于統計技術還是偶數個 while( array[remainder] != 30000 && d <= P / 2){remainder = sum % P; if( cnt == 1 ){remainder = sum % P + d * d;cnt = 0;}else if( cnt == 0 ){remainder = sum % P - d * d;while( remainder < 0 )remainder += P;remainder = remainder % P;d++;cnt = 1;}}array[remainder] = sum;v1[remainder] = str;}if( i != N - 1 )cout << remainder << ' ';elsecout << remainder;}}//7 11 //LLO ANNA NNK ZOJ INNK AAA LLO//測試sum+d為負數的情況 //5 12 //A B C F Z

五:總結

加油兄弟們,本來每天晚上上傳一道題的題解,但昨天肝到凌晨也沒做出來,第二天醒來,繼續肝。這回我是一個一個測試點過的,前兩個,是例子好過,后面三個我是一點一點改過的,花了好長時間。加油吧兄弟們!我們一起變強

總結

以上是生活随笔為你收集整理的7-43 字符串关键字的散列映射 (25 分)(思路+详解+不懂的兄弟们来呀)兄弟们我干了5个小时,一个一个测试点过的的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日韩电影网站 | 欧美乱大交xxxxx春色视频 | 99r热| 美女xx00 | 不卡的毛片| 男人的天堂av网站 | 综合久久婷婷 | 精品人妻一区二区三区三区四区 | 春色影视 | 久久精品这里 | 国产精品久久久久久影视 | 破处视频在线观看 | 天堂а在线中文在线新版 | 欧美一级做性受免费大片免费 | 在线观看视频 | 91禁在线动漫 | 黄色一级片毛片 | 久久艹在线 | 日本美女影院 | 911福利视频 | 色呦呦在线 | 欧洲视频在线观看 | 九草av| 蜜臀av一区二区三区 | 玖玖999 | 一级成人免费 | 91激情捆绑调教喷水 | 在线免费 | av先锋在线 | 激情女主播 | 女同av网站| 成年人www| 欧洲三级在线 | 国产黄av | 久久久蜜桃一区二区人 | 日韩黄色三级 | 免费久久久久久 | 69免费| 欧美一性一交 | 91在线播放国产 | 久久黄色影视 | 九色一区 | 亚洲最大视频网 | 一本一本久久a久久精品综合麻豆 | 长河落日电视连续剧免费观看 | 国产爆乳无码一区二区麻豆 | 外国a级片| 任我爽在线 | 天天插天天干天天操 | 无码国产精品高潮久久99 | 97视频免费在线观看 | 懂色av| 黄色岛国片 | 手机在线视频一区 | 精品久久久久久久久久久久 | 干操网| 黄色三级免费网站 | 久久久久人妻精品一区二区三区 | 少妇高潮一区二区三区四区 | 国内自拍欧美 | 欧美日韩一本 | 亚洲一区 中文字幕 | 中国毛片网站 | 我色综合 | 色88久久久久高潮综合影院 | 在线观看污网站 | 国产欧美一区二区视频 | 国产精品免费一区二区 | 28一20岁女人一级 | 91精品婷婷国产综合久久竹菊 | 国产女人水真多18毛片18精品 | 懂色av一区二区 | 日韩av一区在线播放 | 久操视频在线观看免费 | 成人在线高清视频 | 精品一区二区在线视频 | 偷操| 日韩一级不卡 | 特级黄色片 | 亚洲欧美另类一区 | 苏晴忘穿内裤坐公交车被揉到视频 | 永久视频 | 欧美日韩一区二区三区四区五区六区 | 一级片免费网址 | 五月天伊人网 | 91极品蜜桃臀| 亚洲色图偷 | 亚洲精品一区二区三区在线观看 | 国产女人在线视频 | 日韩av中文字幕在线免费观看 | 亚洲色图视频在线观看 | 国产午夜精品视频 | 69日本xxxxxxxxx30| 久久澡 | 国产69精品久久久久777 | 蜜桃视频中文字幕 | 欧美日韩国产在线观看 | 日本捏奶吃奶的视频 | 特黄老太婆aa毛毛片 |