題意:
求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數,再...