POJ 1850 Code 組合數學)

2021-06-25 22:42:05 字數 636 閱讀 7877

題意:

求str在字典中的編號。字典中的字串都是嚴格公升序排列,而且長度遞增的。a-z為1-26,然後是ab-az

分別編號為27-51,然後是bc-bz。。。

分析:

1、首先可以確定長度比str小的總共有多少個。

比如長度為2的就有c(26,2)個,相當於26個字元中選2個,由於預設是公升序排列,不會重複,排列順序也

固定,所以只要選出來就可以了。

依次類推,長度為i的串的個數分別為c(26,i)

2、然後考慮長度為strlen(str)且在str前面的串的個數,列舉每個位置可取的字元。

比前乙個字元大,比後乙個字元小。(如果是第乙個,則是從a到它後乙個字元減1的字元)

#include#include#includeusing namespace std;

char str[15];

int c[30][30];

void yh()

}c[0][0] = 0;

}int main()

{ yh();

while(scanf("%s",str)!=eof)

{int len = strlen(str),flag = 0,sum;

for(int i=1;i

組合數學 POJ 1850 Code

poj 1850 比如說求比358小的由1 9的數字組成的數 0不算 而且要求後面乙個數一定比前乙個數大,而且數字不能重複,類似於這個意思,這題是字母,當做數字範圍1 26就行 對於358來說 c 9,2 c 9,1 c 7,2 c 8,2 c 6,2 不想寫了,應該沒算錯 兩位數和一位數,一定比 ...

POJ 1850 code 組合數學

poj 1850 code 將字母和單詞 全部小寫並且按照字典序遞增 按照字典序編號,比如 a 1 b 2 z 26 ab 27 az 51 給你乙個字母或單詞,問你它的編號 以樹狀的結構來分析這道題會比較直觀。按照樹的節點依次編號,每個字母或單詞就落在乙個節點上。要求乙個單詞的編號,比較直接的想法...

POJ 1850 Code 組合數學)

題意 a,b,c,z 26個字母組成word,並要求word內每個字母成公升序排列,按字典序對這些words從1開始進行編碼。給定乙個word輸出編碼。思路 易得,長度為k的word總共有c k,26 個 即取k個按公升序排序 對於乙個給定的word,不妨先算出從到該word長度的所有word數,再...