//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數,再...