假定一種編碼的編碼範圍是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.
輸入描述:
輸出描述:輸入乙個待編碼的字串,字串長度小於等於100.
示例1輸出這個編碼的index
輸入編碼方式如下:輸出baca
16331
第一種
#include #include using namespace std;
const int arr = ;
int main()
printf("%d\n", ans);
return 0;
}
第二種:
#include #include #define n1 1
#define n2 25
#define n3 (25 * 25)
#define n4 (25 * 25 * 25)
#define c1 n1
#define c2 (n1 + n2)
#define c3 (n1 + n2 + n3)
#define c4 (n1 + n2 + n3 + n4)
int main()
; scanf("%s", code);
int index = 0;
switch(strlen(code))
printf("%d\n", index);
return 0;
}
最開始我理解的編碼方式為:a,aa,aaa,aaaa,aaab,...,ayyy,aba,abb,abc,...,ayy,ab,ac,...ay,b,ba,baa,...
即a,aa,aaa,然後為四個字母,第乙個位置固定為a,剩下三個位置為排列組合(25*25*25種),然後為三個字母,第乙個位置為a,剩下兩個位置為排列組合(25*25種),然後為兩個字母,第乙個位置為a,剩下乙個位置為排列組合(25種);
接著b,bb,bbb,然後為四個字母,第乙個位置固定為b,剩下三個位置為排列組合(25*25*25種),然後為三個字母,第乙個位置為b,剩下兩個位置為排列組合(25*25種),然後為兩個字母,第乙個位置為b,剩下乙個位置為排列組合(25種);
直到y,yy,yyy...
這種理解是不對的,這道程式設計題有兩個難點,第乙個就是如何對其編碼,開始我理解錯了;第二個就是細節問題,加1與不加1的分析。
五筆的編碼和解碼
q 五筆的編碼範圍是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的inde...
五筆的編碼和解碼
q 五筆的編碼範圍是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的inde...
演算法練習 五筆編碼
五筆的編碼範圍是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為...