組合數學 POJ 1850 Code

2021-07-16 22:10:48 字數 711 閱讀 1979

//poj_1850

//比如說求比358小的由1-9的數字組成的數(0不算)

//而且要求後面乙個數一定比前乙個數大,

//而且數字不能重複,

//類似於這個意思,這題是字母,當做數字範圍1-26就行

//對於358來說

//c(9,2)+c(9,1)+c(7,2)+c(8,2)+c(6,2)+...不想寫了,應該沒算錯

//兩位數和一位數,一定比 

//百位不相等時,可以選2,選了2後,後面只要比2大的數都可以=c(7,2)

//還可以選1 ,選了1之後,後面只要比1大的數就可以=c(8,2)

//百位相等,十位不相等時,以此類推

//358 的話百位相等時,十位只能》=4,要滿足比前一位數大

#include #include #include using namespace std;

// a b c d e f

// 1 2 3 4 5 6

int sum=0,a[110];

int c(int x,int y)

int f(int index,int len)//從首位下去

{ if(len==0)

return 0;

int s;

if(index==0)

s=0;

else s=a[index-1];

for(int i=s+1; i

POJ 1850 Code 組合數學)

題意 求str在字典中的編號。字典中的字串都是嚴格公升序排列,而且長度遞增的。a z為1 26,然後是ab az 分別編號為27 51,然後是bc bz。分析 1 首先可以確定長度比str小的總共有多少個。比如長度為2的就有c 26,2 個,相當於26個字元中選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數,再...