騰訊2017秋招程式設計筆試題

2021-08-07 21:58:26 字數 1525 閱讀 4858

假定一種編碼的編碼範圍是a ~ y的25個字母,從1位到4位的編碼,如果我們把該編碼按字典序排序,形成乙個陣列如下: a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy 其中a的index為0,aa的index為1,aaa的index為2,以此類推。 編寫乙個函式,輸入是任意乙個編碼,輸出這個編碼對應的index.

aaaa~aaab之間相差1,base[4]=1;

aaa~aab之間相差26,base[3]=base[4]*25+1;

aa~ab之間相差,base[2]=base[3]*25+1;

a~b之間相差,base[1]=base[2]*25+1;

例如baca:

第一步:找出b的位置,即與a之間的距離d1=(『b』-『a』)*base[1] + 1

第二步:找出ba的位置,即與ba之間的距離d2 = (『a』-『a』)*base[2] + 1

第三步:找出bac的位置,即與baa之間的距離d3 = (『c』-『a』)*base[3] + 1

第四步:找出baca的位置,即與baca之間的距離d4 = (『a』-『a』)*base[4] + 1

即baca的index = d1+d2+d3+d4-1

#include #include #include #include using namespace std;

int main()

}int main()

printf("%d\n",cnt);

}

geohash編碼:geohash常用於將二維的經緯度轉換為字串,分為兩步:第一步是經緯度的二進位制編碼,第二步是base32轉碼。

此題考察緯度的二進位制編碼:演算法對緯度[-90, 90]通過二分法進行無限逼近(取決於所需精度,本題精度為6)。注意,本題進行二分法逼近過程中只採用向下取整來進行二分,針對二分中間值屬於右區間。演算法舉例如下: 針對緯度為80進行二進位制編碼過程:

1) 區間[-90, 90]進行二分為[-90, 0),[0, 90],成為左右區間,可以確定80為右區間,標記為1;

2) 針對上一步的右區間[0, 90]進行二分為[0, 45),[45, 90],可以確定80是右區間,標記為1;

3) 針對[45, 90]進行二分為[45, 67),[67,90],可以確定80為右區間,標記為1;

4) 針對[67,90]進行二分為[67, 78),[78,90],可以確定80為右區間,標記為1;

5) 針對[78, 90]進行二分為[78, 84),[84, 90],可以確定80為左區間,標記為0;

6) 針對[78, 84)進行二分為[78, 81), [81, 84),可以確定80為左區間,標記為0;

#include #include using namespace std;

int main()

else

}printf("\n");

return 0;

}

騰訊2017秋招筆試程式設計題

1 程式設計題 編碼 假定一種編碼的編碼範圍是a y的25個字母,從1位到4位的編碼,如果我們把該編碼按字典序排序,形成乙個陣列如下 a,aa,aaa,aaaa,aaab,aaac,b,ba,baa,baaa,baab,baac yyyw,yyyx,yyyy 其中a的index為0,aa的index...

騰訊2017秋招筆試程式設計題

五筆的編碼範圍是a y的25個字母,從1位到4位的編碼,如果我們把五筆的編碼按字典序排序,形成乙個陣列如下 a,aa,aaa,aaaa,aaab,aaac,b,ba,baa,baaa,baab,baac yyyw,yyyx,yyyy,其中a的index為0,aa的index為1,aaa的index為...

騰訊2017秋招筆試程式設計題

遊戲裡面有很多各式各樣的任務,其中有一種任務玩家只能做一次,這類任務一共有1024個,任務id範圍 1,1024 請用32個unsigned int型別來記錄著1024個任務是否已經完成。初始狀態都是未完成。輸入兩個引數,都是任務id,需要設定第乙個id的任務為已經完成 並檢查第二個id的任務是否已...